2

我有简单的 XML 文件。

<Parent id=1>
<Child>1</Child>
<Child>2</Child>
</Parent>
<Parent id=2>
<Child>3</Child>
<Child>4</Child>
</Parent>

如何获取父 id=2 的子标签的值?这是我的代码。

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader(readFileAsString(xmlFilename)));

int event;
while ((event = xpp.next()) != XmlPullParser.END_DOCUMENT)
{
//found <Parent id=2> 
    if (event == XmlPullParser.START_TAG && xpp.getName().equalsIgnoreCase("Parent")
            && Integer.parseInt(xpp.getAttributeValue(null, "id")) == 2)
    {

        //TODO - what's next?

    }
}

TODO标签后我该怎么办?我尝试了do-while - 一切都错了。编辑:似乎在这种情况下不能使用 XmlPullParser。它看不到具有不同属性的相同标签之间的区别。我将尝试使用 SAXParser 的 startElement(String uri, String localName, String qName, Attributes attributes)。

4

1 回答 1

2

用布尔标志实现了这一点。当你找到你需要的元素 => 将标志设置为 true 并继续解析。当找到该元素的结束标记 => 将标志设置为 false。

if(flag)
{
    if (event == XmlPullParser.START_TAG && xpp.getName().equalsIgnoreCase("Child"))
      System.out.println(xpp.getText());
}
}
}
if (event == XmlPullParser.END_TAG && xpp.getName().equalsIgnoreCase("Level"))
{
    flag = false;
}

输出:3 4

于 2013-03-04T11:50:50.663 回答