0

ファイルからSOAP応答を解析しようとしています。これはout.xmlです

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
    <response xmlns="http://tempuri.org/">
    <result>
    <config>...</config>
    <config>...</config>
    <config>...</config>
    </result>
    </response>
    </soap:Body>
    </soap:Envelope>

これはjdomのコードです:

SAXBuilder builder = new SAXBuilder();
try {

   Document document = builder.build( new File("out.xml"));
   Element root = document.getRootElement();
   Namespace ns = Namespace.getNamespace("http://tempuri.org/");
   List r = root.getChildren("config", ns);
   System.out.println(r.size());

}

なぜこれは0を出力するのですか?

4

1 に答える 1

1

JDOMのgetChildren方法は次のように文書化されています(私の強調):

これにより、この要素内に直接ネストされた( 1レベルの深さの)すべての子要素のリストがElementオブジェクトとして返されます。

ここでオリジナルを参照してください。

への呼び出しは、子ノードを持たないgetRootElementにあなたを置きます。soap:Envelopeconfig

これを回避するには、次のいずれかを実行できます。

  1. 、および要素getChildrenをナビゲートするために複数回呼び出すsoap:Bodyresponseresult
  2. 1つのレベルだけでなく、階層全体をトラバースするgetDescendantsイテレータを取得するために呼び出します
于 2012-12-21T00:19:16.473 に答える