j2me:如何将字节数组解析为xml,然后从该XML读取和显示特定数据

时间:2014-05-19 05:21:15

标签: xml java-me kxml2 kxml

我正在使用以Web格式返回数据的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:

     codigoCli:30

     

direccion:MCDO。圣马丁PSTO。 Noº06

     

nroID:26626315

     

nroTelef:365548

     

razonSocial:ABANTOCASTAÑEDA,PAULA

     

tipoPersona:N

     
     

客户#2:

     

.....

我真的希望你能理解我的情况,作为一名.net开发人员,没有找到关于此主题的更多信息真的很令人沮丧。

非常感谢您提供的任何帮助。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以使用setInput(new ByteArrayInputStream(response),null / null进行自动检测,或指定正确的编码ID字符串 /)方法来解析xml响应。或者kxml2到底有什么问题?