Android解析没有父节点的子节点

时间:2014-02-28 10:27:01

标签: android xml-parsing

我是以下没有任何父节点的XML片段

<Message>
<Header>
<ID>1234</ID>
<Name>xxxx</Name>
</Header>
</Message>

<Message>
<Header>
<ID>4567</ID>
<Name>YYYY</Name>
</Header>
</Message>

<Message>
<Header>
<ID>6789</ID>
<Name>zzzz</Name>
</Header>
</Message>

我只想提取Name标签中包含的数据。这怎么可能?

1 个答案:

答案 0 :(得分:1)

您可以使用SAXParser解析所有名称,如下所示......

public class NameXMLParser extends DefaultHandler {

    List<String> nameList = new ArrayList<String>();

    private boolean isName = false;
    private StringBuffer mBuffer = new StringBuffer();

    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes)
            throws SAXException {

        if (localName.equalsIgnoreCase("Name")) {
            isTitle = true;
        }
    }

    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {

        if (isName) {
            mBuffer.append(new String(ch, start, length));
        }
    }

    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {

        if (localName.equalsIgnoreCase("Name")) {

            nameList.add(mBuffer.toString());
            isTitle = false;
            mBuffer.delete(0, mBuffer.length());

        }

    }

    public List<String> getNameList() {

        return nameList;
    }

}