如何有效地匹配java中元素的命名空间?

时间:2017-07-20 17:19:41

标签: java xml xml-namespaces

下面的test()函数检查元素是否与预定义的命名空间NSURI匹配:

class MyClass {
    private static final String NSURI = "http://example.com/mynamespace";

    ...

    public test(Element e) {
        return NSURI.equals(e.getNamespaceURI());
    }
}

字符串比较是否有效?我必须迭代许多节点,可能具有不同的命名空间。但是,每次进行字符串比较似乎都很浪费。

是否有更快的方法进行命名空间比较?

1 个答案:

答案 0 :(得分:0)

与VGR一样,您很可能会遇到String与每种方法的比较。但是,有一个选项可以可能

如图here所示,Arrays#equals(char[], char[])是内在的,这意味着它调用本机代码(或程序集)来比较数组,使其成为快得多的替代方案。请记住,JDK 9将在今后一周内发布,此功能将被修改,但它最终仍将是固有的。

因此,如果您能够将每个命名空间收集到一个char[]中,那么将它们进行比较可能比直接进行String比较更快。

最有可能的是,这最终会变得过度,但值得一试!