0

私はAndroidアプリケーションをやっています。私のアプリでは、xml ページを解析する必要があります。xml ページのデータは次の形式です。

<root>
<tag1>data</tag1>

<tag2> 
<div>data1</div><div>data2</div>
</tag2>
</root>

sax 解析でデータを取得しようとしました。

 if (localName.equalsIgnoreCase("tag1"))
if (localName.equalsIgnoreCase("tag2"))

しかし、tag2からデータを取得していませんが、tag1から値を取得しています.divタグを含むすべてのデータを取得したいのですが、htmlページのようにデータを表示できます。

4

2 に答える 2

2

このサンプルコードを使用する

public class SAXParserDemo extends DefaultHandler {

    private String currentTag = "";
    private StringBuffer responseTag;
    private String str;

    @Override
    public void startDocument() throws SAXException {
        super.startDocument();

    }

    @Override
    public void endDocument() throws SAXException {
        super.endDocument();
    }

    @Override
    public void startElement(String uri, String localName, String name,
            Attributes attributes) throws SAXException {
        super.startElement(uri, localName, name, attributes);

        currentTag = localName;
        if ("tag1".equalsIgnoreCase(localName)) {
            responseTag = new StringBuffer();
        }else if ("tag2".equalsIgnoreCase(localName)) {
            responseTag = new StringBuffer();
        }else if ("div".equalsIgnoreCase(localName)) {
            responseTag = new StringBuffer();
        }
    }

    @Override
    public void endElement(String uri, String localName, String name)
            throws SAXException {
        super.endElement(uri, localName, name);
        String responseValue = responseTag.toString().trim();

        if ("tag1".equalsIgnoreCase(localName)) {
            Log.v("TAG", "Tag 1 value "+responseValue);
        }else if ("tag2".equalsIgnoreCase(localName)) {
            Log.v("TAG", "Tag 2 value "+responseValue);
        }else if ("div".equalsIgnoreCase(localName)) {
            Log.v("TAG", "div value "+responseValue);
        }
    }

    @Override
    public void characters(char[] ch, int start, int length)
            throws SAXException {
        super.characters(ch, start, length);
        str = new String(ch, start, length);

        if ("tag1".equalsIgnoreCase(currentTag)) {
            responseTag.append(str);
        }else if ("tag2".equalsIgnoreCase(currentTag)) {
            responseTag.append(str);
        }else if ("div".equalsIgnoreCase(currentTag)) {
            responseTag.append(str);
        }
    }
}
于 2012-04-30T09:07:00.260 に答える
0

SAX 解析を使用している場合は、要素を探す必要がdivあり、親要素 (自分自身) を追跡して、tag2. tag1これらの文字が直接含まれているため、要素内のデータ (文字) を取得しています。tag2要素には (空白以外の) 文字は含まれず、他の要素のみが含まれます。

于 2012-04-30T07:09:19.073 に答える