0

XMLPullParser を使用して、残念ながら次のような特別な文字が含まれている XML ドキュメントを解析します: または &...一部のテキスト コンテンツの中央)。この XML ファイルを制御できないため、ドキュメントの解析中にこの問題を修正する必要があります。

これどうやってするの?私はすでにいくつかの調査を行っており、ENTITY_REF という eventType を実装できることがわかりましたが、そのアプローチに対処する方法がわかりません。

何かのヒントになれば幸いです。

私のパーサー:

    while (eventType != XmlPullParser.END_DOCUMENT) {
        if (eventType == XmlPullParser.START_TAG) {
            currentTag = xpp.getName();

        } else if (eventType == XmlPullParser.TEXT) {

            if ("title".equals(currentTag)) {
                currentEvent.setTitle(xpp.getText());
                System.out.println("Event title: " + xpp.getText());
            } 
        } else if (eventType == XmlPullParser.END_TAG) {
            if ("event".equals(xpp.getName())) {
                events.add(currentEvent);
                currentEvent = new Event();
            }
        }  else if (eventType == XmlPullParser.ENTITY_REF) {
            System.out.println("Entity REF: " + xpp.getText());
        }


        eventType = xpp.nextToken();
    }
4

2 に答える 2

1

SAXと同様に、XMLPullParserは非常に低レベルの解析インターフェイスであり、使いやすさを大幅に犠牲にして高いパフォーマンスを実現します。パーサーはテキストノードをフラグメントに自由に分割できます。コードはフラグメントのシーケンスを受け入れ、それらを実際の文字列値にアセンブルする必要があります。

于 2012-06-29T11:34:10.667 に答える
0

拡張してみませんか?DefaultHandler使いやすく、コードをより再利用しやすくします。このような問題に直面することはないと思います。

于 2012-06-29T11:38:48.837 に答える