最快高效解析XML数据,而架构的方式界定

最快高效解析XML数据,而架构的方式界定

问题描述:

目前,我处理(MBS)如下,最快高效解析XML数据,而架构的方式界定

  1. 创建XML DOM记录对象中的XML数据。
  2. 在DOM对象上应用XPath查询来检索字段。

我的XML是如下,

<root> 
    <element> 
    <sub-element>A</sub-element> 
    <sub-element>B</sub-element> 
    </sub-element> 
    <sub-element>D</sub-element> 
    <sub-element>E</sub-element> 
    </element> 
</root> 

场景#1: 检索元素的子元素的列表预期返回以下输出

子元件 - {” A','B','','D','E'} - XML中的第3个节点包含空/空值,应该将其创建为空节点。但目前我得到的输出为{'A','B','D','E'}第三个值不会被创建。

方案2: 有在我们的应用程序,它是在XPATH繁琐检索XML DOM对象

字段(如参数化的XPath)正在使用一些复杂的查询有没有什么办法,我们可以做到这一点以有效且最快的方式使用DOM本身?

我们需要创建一个从XML(通过XStream的)一个对象图和处理通过等待处理的POJO对象的普通Java方式查询?

要做到这一点的最佳方法是什么?

在此先感谢。

+0

简短的回答是否定的......你不需要创建一个对象图... vtd-xml正是为了避免所有这些对象而更快。 –

好吧,几乎任何其他树模型都会比DOM好。您似乎建议放弃解决方案的XPath部分,但放弃DOM部分会更好。例如,在本机Saxon树上运行时,Saxon的XPath引擎比运行DOM时快5-10倍。 (DOM对于搜索来说确实效率很低,很大程度上是因为它处理命名空间的笨拙方式)。

但你的问题很混乱。您的XML示例格式不正确:我怀疑您写的</sub-element>您的意思是<sub-element/>。如果您的XPath正在检索那个空的元素,而您不需要它,那么您只需要更正XPath。在场景#2中,如果编写XPath来表达复杂的条件是“乏味的”,那么使用低级DOM导航进行导航以找到相同的数据将会变得无穷无尽。但是,你似乎对你的目标感到困惑。你的头衔说你想要“快速高效”,但现在突然你的目标是不那么“乏味”。你需要让自己的头脑达成你想要达到的目标。