0

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_TAGです。

これはどのように機能することになっていますか?それとも私は何かが足りないのですか?

どんな助けでも大歓迎です、
テジャ。

4

2 に答える 2

0

これがあなたの正確な問題であるかどうかはよくわかりませんが、

</root>

開始タグの後とコンテンツの後のeventTypeタイプを印刷してみましたか?

于 2010-12-23T21:00:45.173 に答える
0

いつものように、申し訳ありませんが、キャッチオールブロックを作成するのは悪い考えであることが判明しました。ここに投稿しなかったコードの一部に例外があることに気づきませんでした。これはXmlPullParser.END_TAGに入るはずです。それを削除し、魅力のように動作します:)

于 2010-12-24T04:43:35.620 に答える