Java Sax解析器:未调用processingInstruction()

Java Sax解析器:未调用processingInstruction(),java,xml,sax,saxparser,Java,Xml,Sax,Saxparser,也许这是一个n00b问题 我尝试像这样解析xml文件: <?xml version="1.0" encoding="UTF-8" ?> <test> <a></a> </test> 我希望输出“处理指令”打印在标准输出上。但这并没有发生。有人能告诉我为什么吗?来自JavaDoc: SAX解析器决不能使用此方法报告XML声明(XML 1.0,第2.8节)或文本声明(XML 1.0,第4.3.1节) 据我所知,此方法不会报告/捕获行。

也许这是一个n00b问题

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

<?xml version="1.0" encoding="UTF-8" ?>
<test>
  <a></a>
</test>
我希望输出
“处理指令”
打印在标准输出上。但这并没有发生。有人能告诉我为什么吗?

来自JavaDoc:

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


据我所知,此方法不会报告/捕获
行。尝试在xml代码中添加另一条处理指令,并再次将其提供给解析器。

谢谢您的回答。那么另一个问题是:是否有可能找出文件中是否存在有效的xml声明?@Martin:ISTR如果声明无效,它将抛出异常。换句话说,xml声明不是处理指令,解析器不能将其作为一条进行报告。@Vinko很遗憾,如果声明丢失,它不会引发异常…@Martin:但如果声明无效,它会引发异常,不是吗?
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);
}