java - Sax解析器: processingInstruction() not called

标签 java xml sax saxparser

也许这是一个难解的问题。

我尝试解析这样的 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);
}

我希望输出“处理指令”打印在标准输出上。但这并没有发生。有人能告诉我为什么吗?

最佳答案

来自 JavaDoc:

A SAX parser must never report an XML declaration (XML 1.0, section 2.8) or a text declaration (XML 1.0, section 4.3.1) using this method.

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

关于java - Sax解析器: processingInstruction() not called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3288622/

相关文章:

java - 如何将 ":"殖民名称从 XML 转换为 XSD 架构?

java - 过滤维基百科的 XML 转储 : error on some accents

c++ - SAX2 (Xerces-C) : How to get the line number of parsed tags?

java - 如何解析嵌套的 XML 数据并仅从中提取用户标识?

java - 如何利用 spring roo 的时间界限?

java - 从整数的复合除法返回 Double

php - 在 PHP 中选择函数时需要帮助

java - 弗洛伊德-沃歇尔算法

java - 运行时 Java 中的重音问题

Java XML 解析器执行每个节点两次