Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在org.w3c.dom.Document中搜索属性的最快方法_Java_Regex - Fatal编程技术网

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

Java 在org.w3c.dom.Document中搜索属性的最快方法,java,regex,Java,Regex,我有一个输入文档,我想从中以最快的方式搜索属性。下面是一个相当愚蠢的例子: <PossibleSuspects> <PossibleSuspect name="A" id="423" character="shady"/> <PossibleSuspect name="B" id="423" character="normal"/> <PossibleSuspect name="C" id="423" character="normal"/&

我有一个输入文档,我想从中以最快的方式搜索属性。下面是一个相当愚蠢的例子:

<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>

基本上,我想获得
字符
不可见的行的
名称
属性。我同意第一次这样的匹配(其他的可以忽略/将有相同的
名称

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


哪一种更快?

如果速度真的很重要,您应该使用第二种方法,使用正则表达式搜索字符串文档(幸运的是,您)。但您应该考虑到,XML中属性的顺序并不能得到保证。还有一个可能会有帮助

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

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

而且也没有那么慢。

如果速度真的很重要,你应该使用第二种方法,用正则表达式搜索字符串文档(幸运的是你)。但您应该考虑到,XML中属性的顺序并不能得到保证。还有一个可能会有帮助

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

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

而且也没有那么慢。

我不建议使用正则表达式,但是如果速度很重要,您可以选择一个不需要构建dom树的拉式解析器(无需验证)。我不建议使用正则表达式,但是如果速度很重要,您可以选择一个不需要构建dom树的拉式解析器(无需验证)。虽然XML当然更容易解析,但这是性能和灵活性/兼容性之间的折衷。我更喜欢xpath方式,因为我很少看到xml处理对时间非常关键的情况。尽管如此,事件驱动的方法(如SAX oder XMLStreams)可能也是一个不错的选择。虽然XML肯定更容易解析,但同意,它是性能和灵活性/兼容性之间的折衷。我更喜欢xpath方式,因为我很少看到xml处理对时间非常关键的情况。尽管如此,事件驱动方法(如SAX oder XMLStreams)可能也是一个不错的选择。