j2me: Как проанализировать байтовый массив в XML, а затем прочитать и отобразить конкретные данные из этого XML

Я использую метод ASP.NET Web API, который возвращает данные в формате XML. Все было хорошо, пока мне не пришлось анализировать полученный байтовый массив, полученный в результате 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();
    }
}

И вот пример результата XML, который я получил от метода GetCustomers:

<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. САН МАРТИН ПСТО. № 06

nroID: 26626315

nroTelef: 365548

razonSocial: ABANTO CASTAÑEDA, PAULA

ТипоПерсона: N


Клиент № 2:

.....

Я действительно надеюсь, что вы понимаете мою ситуацию, будучи разработчиком.net, это очень расстраивает, когда вы не можете найти много информации по этой теме, как эта.

Любая помощь, которую вы можете оказать, будет принята с благодарностью.

Заранее спасибо.

1 ответ

Вы можете использовать метод setInput (new ByteArrayInputStream (response), null /null для автоопределения или указать правильный код строки id/) для анализа xml-ответа. Или в чем проблема именно с kxml2?

Другие вопросы по тегам