1

也许这是一个n00b问题。

我尝试解析这样的 xml 文件:

<?xml version="1.0" encoding="UTF-8" ?>
<test>
  <a></a>
</test>

使用以下代码:

public static void parse(File f) {
    final DefaultHandler handler = new DefaultHandler() {
        @Override
        public void processingInstruction(String target, String data) throws SAXException {
            System.out.println("Processing Instruction");
        }
    };
    SAXParserFactory.newInstance().newSAXParser().parse(f, handler);
}

我希望输出"Processing Instruction"打印在标准输出上。但这不会发生。有人可以告诉我为什么吗?

4

1 回答 1

1

来自 JavaDoc:

SAX 解析器绝不能使用此方法报告 XML 声明(XML 1.0,第 2.8 节)或文本声明(XML 1.0,第 4.3.1 节)。

据我了解,<?xml version="1.0" encoding="UTF-8" ?>此方法不会报告/捕获该行。尝试在 xml 代码中添加另一个处理指令并再次将其提供给解析器。

于 2010-07-20T09:34:48.053 回答