1

私は Android (iOS/Objective C app の移植) を初めて使用し、WebService によって返された XML (JSON のいくつかのノードを含む) ファイルを読み取る必要があります。

応答は次のようになります。

<SOAP-ENV:Envelope><SOAP-ENV:Body><ns1:TPLoginResponse><TPLoginResult>[{"content": "some json content...."]</TPLoginResult></ns1:TPLoginResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>

TPLoginResult の内容を簡単に取得するにはどうすればよいですか?

私は試した :

            httpTransport.call(SOAP_ACTION, envelope);

            Object response = envelope.getResponse();

            SoapObject SoapResponse = (SoapObject)envelope.bodyIn;

            Log.e("Info",  "response : " + SoapResponse.toString() ); // content is successfully received here 

            String SResponse =  SoapResponse.toString();

            Log.e("Info",  "DocumentBuilderFactory" );

            // parse the XML as a W3C Document
            DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
            builderFactory.setNamespaceAware(true);
            DocumentBuilder builder = builderFactory.newDocumentBuilder();

            Document document = builder.parse( new InputSource(new StringReader(SResponse)) );

             NodeList nList = document.getElementsByTagName("TPLoginResult");

             Log.e("info","nList length : " + nList.getLength());

しかし、長さ0のnListが必要です...

私も試しました:

  NodeList nList = document.getElementsByTagName("ns1:TPLoginResponse");

しかし、同じ0の長さの結果..

助言がありますか ?

4

3 に答える 3

1

KSOAP Androidは、SOAPWebサービスを利用するための非常に便利なツールです。私はすべてのAndroidアプリケーションでこのツールを使用しています。そして、私はそれがうまくいくと言うことができます。

あなたは彼らのウィキとインターネット全体で例を見つけることができます。

于 2012-06-13T12:20:38.833 に答える
1

キーは次の行にあると思います。

builderFactory.setNamespaceAware(true);

その行にコメントすると、要素を取得できます

document.getElementsByTagName("TPLoginResponse");

それ以外の場合は、おそらく次を使用する必要があります。

document.getElementsByTagNameNS(namespaceURI,tag);

しかし、私は最後の行を使用したことがないので、あなたを助けることはできません.

それがあなたにとってどのように機能するか教えてください、私は興味があります。

于 2012-06-13T12:17:58.063 に答える
0

最後に、ksoap メソッドを使用する方が簡単であることがわかりました。

String LoginResponse = SoapResponse.getProperty(0).toString();
于 2012-06-13T13:26:34.490 に答える