在org.w3c.dom.Document中搜索属性的最快方法

时间:2016-04-05 13:21:46

标签: java regex

我有一个输入文档,我希望以最快的方式搜索属性。例如:下面是一个非常愚蠢的例子:

<PossibleSuspects>
  <PossibleSuspect name="A" id="423" character="shady"/>
  <PossibleSuspect name="B" id="423" character="normal"/>
  <PossibleSuspect name="C" id="423" character="normal"/>
  <PossibleSuspect name="A" id="423" character="shady"/>
</PossibleSuspects>

基本上,我想获取name阴影的行的character属性。我对第一次这样的比赛没问题(其他人可以忽略/将有相同的name)。

在将文档转换为字符串后,我考虑循环整个文档并获得第一个匹配与进行正则表达式搜索。

哪个更快?

1 个答案:

答案 0 :(得分:1)

如果速度真的很重要,你应该采用第二种方法,用正则表达式搜索字符串文档(幸运的是,XML is no HTML)。但是您应该考虑到XML中的属性排序无法保证。另外Scanner可能会有所帮助。

如果代码的简单性更重要,我建议使用Xpath

XPath xpath = XPathFactory.newInstance().newXPath();
String name = xpath.evaluate("//PossibleSuspect[@character='shady']/@name",document);

它也不慢。