質問

名前空間のない文字列としてXMLドキュメントを持っているので、Java、JDom、XPathを使用して解析し、オブジェクトツリーを作成したいと考えています。 Xpathは常にプレフィックスと名前空間をクエリする必要があるため、rootに名前空間とプレフィックスを追加し、その後取得したいノードに追加しますが、xpathはドキュメント内のすべてのノードの名前空間が必要ですが、ルート内のみが必要です。

それで、最初はドキュメントオブジェクト内のすべての要素に名前空間を追加する方法があります。

コードにも他の間違いや悪い承認があるはずです。どんなアイデアにも嬉しいです。

String response="myXmlString"
ByteArrayInputStream stream = new ByteArrayInputStream(
            response.getBytes());
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(stream);
org.jdom.Element request=(org.jdom.Element) doc.getRootElement();   
request.setNamespace(Namespace.getNamespace("myNamespace"));

createRequest(request);

その後

public Request createRequest(Element requestXML) {              
Request request = new Request();
requestXML.detach();
Document doc = new Document(requestXML);
XPath xpath = XPath.newInstance(myExpression);
xpath.addNamespace("m", doc.getRootElement().getNamespaceURI());

xpath.selectSingleNode(doc);

}

この最後の行は空に戻り、nullではありませんが、内部にJDOM例外をスローします。

役に立ちましたか?

解決

XPathとXMLは名前空間を必要としません。元のXMLに戻り、コードの名前空間/プレフィックスハッカーを削除します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top