1
对于我的应用程序,我只需要确定根节点的名称空间,所以理想情况下我想执行单个操作来获取此名称空间。使用VTD-XML查找给定元素的名称空间
我有使用XPath来获取所有(/*/namespace::*
)宣布命名空间的代码,但我必须去通过他们所有,并为每一个把它比我的前缀,这是我想做到vn.toRawString避免。
我确定我在这里错过了一些明显的东西,但是获取给定元素的名称空间的最佳方式是什么,因为getAttrValNS中不考虑xmlns:属性?
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,这将只是给我的根节点,没有声明根节点上的所有命名空间的命名空间?
我认为VTD-XML的支持XPath功能,如命名空间URI(节点集?),你可能想看看... – 2013-03-05 21:59:36
这奏效了。 'AutoPilot ap =新的AutoPilot(vn); ap.selectXPath(“namespace-uri(。)”); String ns = ap.evalXPathToString();' – 2013-03-06 02:33:13