首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Axiom解析器实体问题

Axiom解析器实体问题
EN

Stack Overflow用户
提问于 2018-09-05 21:19:17
回答 2查看 79关注 0票数 0

我正在使用Axiom解析器解析xml文件。如果xml元素包含任何html实体,axiom解析器会将其添加到开头,而不考虑其位置。

例如:。

代码语言:javascript
复制
<Root>
  <P> This element contains &alpha; html entity. </P>
</Root>

OMXMLParserWrapperObj.getDocumentElement()返回以下输出。

代码语言:javascript
复制
<Root>
  <P>&alpha; This element contains html entity. </P>
</Root>

但输出应该与输入相同。对如何解决这个问题有什么建议吗?

我使用了下面的代码:

代码语言:javascript
复制
 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);
}
EN

回答 2

Stack Overflow用户

发布于 2018-11-20 06:06:05

这是由JRE中的StAX解析器中的错误引起的。启用IS_COALESCING时,它会以错误的顺序返回事件。要解决此问题,请基于STANDALONE构建一个新的StAXParserConfiguration,同时禁用合并:

代码语言:javascript
复制
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";
    }
}
票数 2
EN

Stack Overflow用户

发布于 2018-11-12 13:46:27

问题已与Axiom团队确认。这个问题将在下一个版本中得到解决。供参考:

https://issues.apache.org/jira/browse/AXIOM-490

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52186170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档