1

对于我的应用程序,我只需要确定根节点的命名空间,所以理想情况下我想执行一个操作来获取这个命名空间。

/*/namespace::*我的代码使用 XPath 来获取所有声明的命名空间(

我确定我在这里遗漏了一些明显的东西,但是获取给定元素的名称空间的最佳方法是什么,因为 xmlns: 属性不在 getAttrValNS 中考虑?

String elementName = vn.toRawString(vn.getCurrentIndex());

String prefix = prefix(elementName);
String localName = localName(elementName);

QName rootQName;
if (prefix == null) {
    rootQName = new QName(localName);
} else {
    int nsIndex = vn.getAttrValNS("xmlns", prefix);

    // Can't find index because xmlns attributes are not included

    String namespace =  vn.toRawString(nsIndex);
    rootQName = new QName(namespace, localName);
}

是否有一个简单的 XPath 只会给我根节点的名称空间,而不是根节点上声明的所有名称空间?

4

1 回答 1

1
AutoPilot ap = new AutoPilot(vn);
ap.selectXPath("namespace-uri(.)");
String ns = ap.evalXPathToString();
于 2013-03-06T02:34:10.857 回答