使用SAX Parser的多级xml

时间:2013-03-14 11:56:32

标签: android xml-parsing saxparser

我想从xml文件下面创建一个列表视图:

      <Menu>
    <Project name ="Desktop Application">
<name>Desktop Application</name>
<Description>This is some text.</Description>
<image>2130837532</image>
    <Sub>
        <SubName>PowerISO</SubName>
        <SubDescription>This is some text.</SubDescription>
        <SubImage>2130837555</SubImage>
    </Sub>
    <Sub>
        <SubName>Microsoft Office</SubName>
        <SubDescription>This is some text.</SubDescription>
        <SubImage>2130837549</SubImage>
    </Sub>
    <Sub>
        <SubName>Adobe Reader</SubName>
        <SubDescription>This is some text.</SubDescription>
        <SubImage> 2130837506 </SubImage>
    </Sub>
    <Sub>
        <SubName>Vlc Player</SubName>
        <SubDescription>This is some text.</SubDescription>
        <SubImage>2130837587</SubImage>
    </Sub>
    <Sub>
        <SubName>Picasa Photo Viewer</SubName>
        <SubDescription>This is some text.</SubDescription>
        <SubImage>2130837554</SubImage>
    </Sub>
    <Sub>
        <SubName>KM Player</SubName>
        <SubDescription>This is some text.</SubDescription>
        <SubImage>2130837542</SubImage>
    </Sub>
    <Sub>
        <SubName>Cricket</SubName>
        <SubDescription>This is some text.</SubDescription>
        <SubImage>2130837524</SubImage>
    </Sub>
</Project>

等等 但是我已经为主要项目创建了一个但是在点击其中一个之后我想根据主项目显示子项目。 我无法创建第二个列表,根据主要项目显示子项目。 我使用SAX解析器完成了这个。 Plz帮我做这件事。

这是我的startElement()方法,我希望如果项目名称是桌面应用程序,那么桌面应用程序的子项目将显示在listview上。 我没有得到这个。 请帮帮我!!

       public void startElement(String uri, String localName, String qName,
        Attributes attributes) throws SAXException {
    // TODO Auto-generated method stub

    currentElement = true;

    if (qName.equals("Menu")) {
        subList = new ArrayList<SubProjectInfo>();
    } else if (qName.equals("Project")) {
        subProInfo1 = new SubProjectInfo();
        String gh = attributes.getValue("name");

1 个答案:

答案 0 :(得分:0)

  1. 为项目调用startElement()时将标志设置为true,其属性名称设置为Desktop Application

  2. 为具有其他名称的项目调用startElement()时,将相同的标志设置为false

  3. 只要标志为true且为SubName元素调用startElement(),就将元素的文本内容保存到列表视图中。