目前我正在处理XML数据(以MB为单位),如下所示,
我的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: 检索元素的子元素列表应该返回以下输出
子元素 - {&#39; A&#39;,&#39; B&#39;&#39;&#39;&#39; D&#39;,&#39; E&# 39;} - XML中的第3个节点包含空/ null,应该创建为空节点。但目前我的输出结果为{&#39; A&#39; B&#39;&#39; D&#39; E&#39; E&#39;}未创建第3个值。
场景#2: 在我们的应用程序中使用了一些复杂的查询,这在XPATH中很繁琐,无法从XML DOM对象中检索字段(如参数化的XPATH)
有没有什么方法可以使用DOM本身以高效和快速的方式实现这一目标?
或
我们是否需要从XML(通过XStream)创建对象图并通过正常的java方式处理POJO对象来处理查询?
或
这样做的最好方法是什么?
提前致谢。
答案 0 :(得分:0)
好吧,几乎任何其他树模型都会比DOM更好。您似乎建议删除解决方案的XPath部分,但删除DOM部分会好得多。例如,在本机Saxon树上运行时,Saxon的XPath引擎比在DOM上运行时快5-10倍。 (DOM在搜索方面效率很低,主要是因为它处理命名空间的方式很笨拙)。
但你的问题很混乱。您的XML示例格式不正确:我怀疑您已将</sub-element>
写为<sub-element/>
。如果你的XPath正在检索那个空元素并且你不想要它,那么你只需要更正你的XPath。
在场景#2中,如果编写XPath来表达您的复杂条件是非常繁琐的,那么导航以使用低级DOM导航查找相同的数据将会变得无比繁琐。但是,你似乎对你的目标感到困惑。你的头衔表明你想要快速高效地工作,但现在突然你的目标是减少和繁琐#34;。你需要让自己的想法得到实现。