Sax Parser:没有调用processingInstruction()

时间:2010-07-20 09:30:01

标签: java xml sax saxparser

也许这是一个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"打印在stdout上。但这不会发生。有人可以告诉我为什么吗?

1 个答案:

答案 0 :(得分:1)

来自JavaDoc:

  

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

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