我正在使用Axiom解析器解析xml文件。如果xml元素包含任何html实体,axiom解析器会将其添加到开头,而不考虑其位置。
例如:。
<Root>
<P> This element contains α html entity. </P>
</Root>OMXMLParserWrapperObj.getDocumentElement()返回以下输出。
<Root>
<P>α This element contains html entity. </P>
</Root>但输出应该与输入相同。对如何解决这个问题有什么建议吗?
我使用了下面的代码:
try {
InputStream in;
OMElement rootOMElement;
in = new FileInputStream(xmlFile);
XMLStreamReader parser;
StAXParserConfiguration standalone = StAXParserConfiguration.STANDALONE;
parser = StAXUtils.createXMLStreamReader(standalone, in);
OMXMLParserWrapper createStAXOMBuilder = OMXMLBuilderFactory.createStAXOMBuilder(parser);
rootOMElement = createStAXOMBuilder.getDocumentElement();
in.close();
}
catch (XMLStreamException | IOException e) {
Logger.getAnonymousLogger().log(Level.SEVERE, e.getStackTrace(), e);
}发布于 2018-11-20 06:06:05
这是由JRE中的StAX解析器中的错误引起的。启用IS_COALESCING时,它会以错误的顺序返回事件。要解决此问题,请基于STANDALONE构建一个新的StAXParserConfiguration,同时禁用合并:
new StAXParserConfiguration() {
public XMLInputFactory configure(XMLInputFactory factory, StAXDialect dialect) {
StAXParserConfiguration.STANDALONE.configure(factory, dialect);
StAXParserConfiguration.NON_COALESCING.configure(factory, dialect);
return factory;
}
public String toString() {
return "STANDALONE_NON_COALESCING";
}
}发布于 2018-11-12 13:46:27
问题已与Axiom团队确认。这个问题将在下一个版本中得到解决。供参考:
https://stackoverflow.com/questions/52186170
复制相似问题