我有一个输入文档,我希望以最快的方式搜索属性。例如:下面是一个非常愚蠢的例子:
<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
)。
在将文档转换为字符串后,我考虑循环整个文档并获得第一个匹配与进行正则表达式搜索。
哪个更快?
答案 0 :(得分:1)
如果速度真的很重要,你应该采用第二种方法,用正则表达式搜索字符串文档(幸运的是,XML is no HTML)。但是您应该考虑到XML中的属性排序无法保证。另外Scanner可能会有所帮助。
如果代码的简单性更重要,我建议使用Xpath
XPath xpath = XPathFactory.newInstance().newXPath();
String name = xpath.evaluate("//PossibleSuspect[@character='shady']/@name",document);
它也不慢。