1

データを xml 形式で返す ASP.NET Web API メソッドを使用しています。openInputStream から得たバイト配列を解析する必要があるまでは、すべて問題ありませんでした。誰もがこのライブラリまたはそのライブラリを使用すると言いますが、残念ながらあまり情報がなく、私が見つけた唯一のまともな例は、著者が物理的なドキュメントを読む KXML と呼ばれる非推奨のライブラリからのものでした (明らかに私の場合ではありません)。個人的には KXML2 を使用したいと思っていましたが、この時点では、可能な限り簡単な方法で XML を読み取れるようにするための最初のソリューションを受け入れています。

Web API メソッドを使用するために使用するコードは次のとおりです。

HttpConnection connection = null;
InputStream is = null;

final ByteArrayOutputStream bos = new ByteArrayOutputStream();

byte[] response = null;

try {
    connection = (HttpConnection)Connector.open("http://myminimarket/api/customers/GetCustomers", Connector.READ);
    connection.setRequestMethod(HttpConnection.GET);

    connection.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.1");

    if (connection.getResponseCode() == HttpConnection.HTTP_OK) {
        is = connection.openInputStream();

        if (is != null) {
            int ch = -1;

            while ((ch = is.read()) != -1) {
                bos.write(ch);
            }

            response = bos.toByteArray();
        }
    }
} catch (Exception e) {
    e.printStackTrace();
} finally {
    try {
        if (bos != null) {
            bos.close();            
        }

        if (is != null) {
            is.close();
            is = null;
        }

        if (connection != null) {
            connection.close();
            connection = null;
        }
    } catch (Exception e2) {
        e2.printStackTrace();
    }
}

GetCustomersメソッドから取得した XML 結果のサンプルを 次に示します。

<ArrayOfCustomer xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WSWebAPI.Helpers">
<Customer>
<codigoCli>30</codigoCli>
<direccion>MCDO. SAN MARTIN PSTO. Nº 06</direccion>
<nroID>26626315</nroID>
<nroTelef>365548</nroTelef>
<razonSocial>ABANTO CASTAÑEDA, PAULA</razonSocial>
<tipoPersona>N</tipoPersona>
</Customer>
<codigoCli>61</codigoCli>
<direccion>
JR. SANTA TERESA DE JUORNET MZA. L. LOTE 11 (FRENTE AL QUINDE-COSTADO DE FARMACIA)
</direccion>
<nroID>10414741067</nroID>
<nroTelef/>
<razonSocial>ACUÑA SIFUENTES, ILZE SOLEDAD</razonSocial>
<tipoPersona>N</tipoPersona>
</Customer>
<Customer>
<codigoCli>69</codigoCli>
<direccion>JR. JOSE GALVEZ Nº 478</direccion>
<nroID>15586005</nroID>
<nroTelef/>
<razonSocial>AEDO YANQUI, MARGARITA</razonSocial>
<tipoPersona>N</tipoPersona>
</Customer>
<Customer>
<codigoCli>115</codigoCli>
<direccion>JR. AMALIA PUGA Nº 1008 TELEF. 367878</direccion>
<nroID>10266028356</nroID>
<nroTelef/>
<razonSocial>ALARCON ZEGARRA, EDULFO</razonSocial>
<tipoPersona>N</tipoPersona>
</Customer>

これらの詳細を使用して、次のようなものを表示する方法を見つけたいと思います。

顧客 # 1:

コードクリ: 30

方向:MCDO。サン マルティン PSTO。No.06

nroID : 26626315

nroTelef: 365548

razonSocial: ABANTO CASTAÑEDA, PAULA

ティポペルソナ:N


顧客 # 2:

.....

.net 開発者である私の状況を理解していただければ幸いです。このようなトピックに関する情報があまり見つからないのは本当にイライラします。

ご提供いただけるご支援をいただければ幸いです。

前もって感謝します。

4

1 に答える 1

2

setInput(new ByteArrayInputStream(response), null / null を自動検出に使用するか、適切なエンコード ID 文字列/) メソッドを指定して、xml 応答を解析できます。または、kxml2 の正確な問題は何ですか?

于 2014-05-19T13:23:20.387 に答える