1

Dom4j を使用して SOAP メッセージを解析しています。問題がありました:
Node node = document.selectSingleNode( "/*/soapenv:Envelope/soapenv:Body/ns:addResponse" );
上記の XPath を使用すると、次の例外が発生しました:
Exception: XPath expression uses unbound namespace prefix ns1
これを行う方法を見つけました: 名前空間を削除しますが、これはお勧めできません。
どんな助けでも大歓迎です。ところで
、この作業のためのより良い方法またはツールキットはありますか?

4

1 に答える 1

1

org.dom4j.XPathオブジェクトを作成し、それに適切な名前空間バインディングをアタッチする必要があります。このようなもの:

XPath xpath = document.createXPath("/*/soapenv:Envelope/soapenv:Body/ns:addResponse");
Map<String, String> nsb = new HashMap<String, String>();
nsb.put("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
nsb.put("ns", ".....");
Node node = xpath.selectSingleNode(document);

もっと良い方法はありますか?さて、最近はJAX-WSがあり、サービスで利用可能なWSDLがある場合、通常、Javaインターフェースとそのクラスを生成するのは非常に簡単です。

于 2011-06-19T14:10:55.650 に答える