无法使用 XML Factory Instance 解析器从 XML 解析和数据



我有一个XML,我需要使用XMLInputFactory(java.xml.stream)解析。XML的类型是:

<SACL>
<Criteria>Dinner</Criteria>
<Value> Rice & amp ;(without spaces) Beverage </Value>
</SACL>

我在JAVA中使用XML工厂阅读器解析这个,我的代码是:

if(xmlEvent.asStartElement().getName().getLocalPart().equals("Value"){
xmlEvent = xmlEventReader.nextEvent();
value = xmlEvent.asCharacters().getData().trim();  //Issue is in the if bracket only
}

(xmlEventReader = XMLInputFactory.newInstance().createXMLEventReader(new FileInputStream(file.getPath())); //using java.xml.stream.XMLEventReader

但是它只是像这样解析数据"(失踪,饮料)预计产量:大米;饮料

谁能建议一下"&Amp;"(没有空格),如何修复?

我最近做过一个XML解析的项目,所以我几乎确切地知道这里发生了什么:解析器将&amp;视为单独的事件(XMLStreamConstants.ENTITY_REFERENCE)。

尝试在XML解析器的选项中将属性XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES设置为true。如果解析器被正确实现,则实体被替换并成为文本的一部分。

请记住,解析器允许将其拆分为多个字符事件,特别是当您有大块文本时。设置属性XMLInputFactory.IS_COALESCINGtrue应该可以防止这种情况。

最新更新