最快高效解析XML数据,而架构的方式界定
问题描述:
目前,我处理(MBS)如下,最快高效解析XML数据,而架构的方式界定
- 创建XML DOM记录对象中的XML数据。
- 在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方式查询?
或
要做到这一点的最佳方法是什么?
在此先感谢。
答
好吧,几乎任何其他树模型都会比DOM好。您似乎建议放弃解决方案的XPath部分,但放弃DOM部分会更好。例如,在本机Saxon树上运行时,Saxon的XPath引擎比运行DOM时快5-10倍。 (DOM对于搜索来说确实效率很低,很大程度上是因为它处理命名空间的笨拙方式)。
但你的问题很混乱。您的XML示例格式不正确:我怀疑您写的</sub-element>
您的意思是<sub-element/>
。如果您的XPath正在检索那个空的元素,而您不需要它,那么您只需要更正XPath。在场景#2中,如果编写XPath来表达复杂的条件是“乏味的”,那么使用低级DOM导航进行导航以找到相同的数据将会变得无穷无尽。但是,你似乎对你的目标感到困惑。你的头衔说你想要“快速高效”,但现在突然你的目标是不那么“乏味”。你需要让自己的头脑达成你想要达到的目标。
简短的回答是否定的......你不需要创建一个对象图... vtd-xml正是为了避免所有这些对象而更快。 –