使用Java将XML文件解析为DOM时如何跳过某些元素

时间:2017-05-12 15:03:53

标签: java xml dom xpath

我正在尝试将一些XML文档解析为DOM,以便我可以针对它运行XPath查询。我的代码是用Java编写的,并且一直在使用Xerces org.apache.xerces.parsers.DOMParser实现。

我只对XML的某些部分感兴趣,在元素elementareAbout下,可以忽略其他元素。

<top>
   <elementICareAbout>...</elementICareAbout>
   <elementToIgnore>...</elementToIgnore>
</top>

XML文件的大小可能非常大,我不想保留内存中的元素,我不需要将其作为处理的一部分,我希望在/ top / elementICareAbout中返回XPath查询数据,但/ top / elementToIgnore只会返回任何内容(因为我不需要它)。

查看Xerces DOMParser或JAXP API我没有看到任何明确忽略某些元素的方法,以便在解析后它们不是内存中DOM树的一部分?

是否有一种很好的方法可以从根据我需要的部分量身定制的XML文件构建部分DOM文档?

2 个答案:

答案 0 :(得分:0)

您可以编写SAX过滤器并将其插入(SAX)解析器和文档构建器之间的处理管道中。或者使用相当少的编码,您可以编写XSLT 3.0流式转换。或者您可以编写一个XQuery来选择所需文档的各个部分,并使用支持文档投影的查询处理器运行它。这完全取决于你对Java / DOM编码的结构 - 我更倾向于使用高级语言。

答案 1 :(得分:0)

您还可以通过标记名获取元素。 例如,如果您有一个xml文件,请调用Question.xml。 Question.xml 在java文件中,您可以执行以下操作:

.modal-body { width: 100% }