java - java中如何高效匹配元素的命名空间?

标签 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());
    }
}

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

有没有更快的方法来进行 namespace 比较?

最佳答案

如 VGR 所述,您很可能会遇到每个方法的 String 比较。但是,有一种选择可能是可能的。

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

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

很可能,这最终会变得矫枉过正,但值得一试!

关于java - java中如何高效匹配元素的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45221284/

相关文章:

java - @Column注解不起作用

java - Java 中的扩展接口(interface)和转换错误

java - 如何在运行时创建xml文件?

python - 在lxml中的html注释之间选择div

具有多个 namespace 的python lxml findall

XPath 2.0 : Retrieving nodes by attribute where value is case Insensitive

c# - 将别名/前缀添加到现有 XML 命名空间

java - Java中的图形问题

xml - XPath 中//*[*] 和//*[.] 有什么区别?

java - JLayeredPane + JScrollPane 的剪切问题