kXML (XmlPullParser) не соответствует END_TAG

Я пытаюсь найти способ переписать часть моего XML-кода для разбора. В настоящее время я работаю с kXML2, и вот мой код -

    byte[] xmlByteArray;
    try {
        xmlByteArray = inputByteArray;
        ByteArrayInputStream xmlStream = new ByteArrayInputStream(xmlByteArray);
        InputStreamReader xmlReader = new InputStreamReader(xmlStream);
        KXmlParser parser = new KXmlParser();
        parser.setInput(xmlReader);
        parser.nextTag();

        while(true)
        {
            int eventType = parser.next();
            String tag = parser.getName();
            if(eventType == XmlPullParser.START_TAG)
            {
                System.out.println("****************** STARTING TAG "+tag+"******************");
                if(tag == null || tag.equalsIgnoreCase(""))
                {
                    continue;
                }
                else if(tag.equalsIgnoreCase("Category"))
                {
                    // Gets the name of the category.
                    String attribValue = parser.getAttributeValue(0);
                }
            }
            if(eventType == XmlPullParser.END_TAG)
            {
                System.out.println("****************** ENDING TAG "+tag+"******************");
            }
            else if(eventType == XmlPullParser.END_DOCUMENT)
            {
                break;
            }
    }
    catch(Exception ex)
    {

    }

Мой входной XML выглядит следующим образом -

<root xmlns:sql="urn:schemas-microsoft-com:xml-sql" xmlns="">
<Category name="xyz">
      <elmt1>value1</elmt1>
      <elmt2>value2</elmt2>
</Category>
<Category name="abc">
      <elmt1>value1</elmt1>
      <elmt2>value2</elmt2>
</Category>
<Category name="def">
      <elmt1>value1</elmt1>
      <elmt2>value2</elmt2>
</Category>   

Вкратце моя проблема в том, что я ожидаю XmlPullParser.END_TAG когда он встречает закрывающий тег XML. Это ударил XmlPullParser.START_TAG но это просто кажется, чтобы пропустить / игнорировать все END_TAGs.

Это как это должно работать? Или я что-то упустил?

Любая помощь высоко ценится,
Тея.

2 ответа

Решение

Ой, извините, как всегда, оказалось плохой идеей написать универсальный блок. Я не заметил, что в коде были исключения, которые я не разместил здесь, и которые должны войти в XmlPullParser.END_TAG. Убрал его и работает как шарм:)

Ну, не уверен, что это именно ваша проблема, но вам не хватает

</root>

Вы пытались распечатать, что тип eventType после начального тега и после содержимого?

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