1

私のアプリケーションでは、ルート ノードの名前空間を決定するだけでよいので、理想的には、この名前空間を取得するために単一の操作を実行したいと考えています。

宣言されたすべての名前空間を取得するために XPath を使用するコードがあります/*/namespace::*(

ここで明らかな何かが欠けていると確信していますが、 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 に答える