相关疑难解决方法(0)

是否有Java XML API可以在不解析字符实体的情况下解析文档?

我有程序需要解析包含字符实体的XML.程序本身不需要解决它们,它们的列表很大并且会发生变化,所以如果可以的话,我想避免明确支持这些实体.

这是一个简单的例子:

<?xml version="1.0" encoding="UTF-8"?>
<xml>Hello there &something;</xml>
Run Code Online (Sandbox Code Playgroud)

是否存在可以在不解析(非标准)字符实体的情况下成功解析文档的Java XML API?理想情况下,它会将它们转换为可以特殊处理的特殊事件或对象,但我会选择一种可以默默抑制它们的选项.

答案和示例:

Skaffman给了我答案:使用IS_REPLACING_ENTITY_REFERENCES设置为false 的StAX解析器.

这是我试图尝试的代码:

XMLInputFactory inputFactory = XMLInputFactory.newInstance();
inputFactory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, false);
XMLEventReader reader = inputFactory.createXMLEventReader(
    new FileInputStream("your file here"));

while (reader.hasNext()) {
    XMLEvent event = reader.nextEvent();
    if (event.isEntityReference()) {
        EntityReference ref = (EntityReference) event;
        System.out.println("Entity Reference: " + ref.getName());
    }
}
Run Code Online (Sandbox Code Playgroud)

对于上面的XML,它将打印" Entity Reference: something".

java xml parsing stax character-entities

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

character-entities ×1

java ×1

parsing ×1

stax ×1

xml ×1