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