【问题标题】:Multilevel xml using SAX Parser使用 SAX 解析器的多级 xml
【发布时间】:2013-03-14 11:56:31
【问题描述】:

我想从下面的 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 解析器完成了这项工作。 请帮我做这件事。

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

       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");

【问题讨论】:

    标签: android xml-parsing saxparser


    【解决方案1】:
    1. 当为属性名称设置为桌面应用程序的项目调用 startElement() 时,将标志设置为 true

    2. 当为另一个名称的项目调用 startElement() 时,将相同的标志设置为 false

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

    【讨论】:

    • 我只想知道startElement方法是如何工作的,我是说那个方法的流程?博士
    • 我想你还没有理解 SAX。 startElement() 不会为整个文档调用一次,这不是 DOM。 startElement() 被多次调用:为 XML 中的每个元素调用一次!所以你必须在你的处理程序中保存状态(即我在最初的回答中谈到的标志)并遵循我描述的规则。
    猜你喜欢
    • 2012-08-27
    • 2011-04-30
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    相关资源
    最近更新 更多