0

Android アプリで非常に単純な XML を解析しようとしています。たとえば、次のようになります。

<data> 
    <section id="123">bla</section> 
    <area>blabla</area> 
</data> 

しかし、すべての例で、抽出する必要があるのは表示されるデータ「bla」と「blabla」である場合に、属性 (id は 123) のデータを抽出する方法がわかります。
SAXParser を使用してそれを行うにはどうすればよいですか?

4

4 に答える 4

0

パーサー ハンドラーのcharactersメソッドは、要素のテキスト値を処理します。

于 2012-05-26T19:20:14.547 に答える
0

文字メソッドをオーバーライドする必要があります。

于 2012-05-26T19:21:06.040 に答える
0

パーサーを手作業で書くのはもちろん楽しく、エラーが発生しやすいですが、フレームワークを使用することをお勧めします。組み込みandroid.saxパッケージのような単純なものでも構いません。

StartElementListener(属性がまったく必要な場合)&EndTextListener(要素の本文テキストをキャプチャする)を使用:

class Section implements StartElementListener, EndTextElementListener {
    String mValue;
    String mId;
    @Override
    public void end(String body) {
        mValue = body;
    }
    @Override
    public void start(Attributes attributes) {
        mId = attributes.getValue("", "id");
    }
}

これらのタイプのリスナーは、次のようにElementa から派生したにアタッチされます。RootElement

Section section = new Section();
RootElement data = new RootElement("data");
// Use "requireChild" if a "section" is required as a child of "data".
Element s = data.getChild("section");
s.setStartElementListener(section);
s.setEndTextElementListener(section);
try {
    Xml.parse(xml, data.getContentHandler());
} catch (SAXException e) {
}

基本的に、これは、階層を考慮し、解析している要素を簡単に追跡する SAX 用のコンテンツ ハンドラーを構築するのに役立ちます。短くて気の利いたコードも私は推測します。

于 2012-05-26T20:06:31.833 に答える
0

このチュートリアルは、あなたが楽しみたいと思っているものに正確に対応します

パーサー ハンドラーの characters メソッドが要素のテキスト値を抽出する方法を確認してください。

于 2012-05-26T19:37:07.360 に答える