我有简单的XML文件。
<Parent id=1>
<Child>1</Child>
<Child>2</Child>
</Parent>
<Parent id=2>
<Child>3</Child>
<Child>4</Child>
</Parent>
如何获取Parent id = 2的Child标签的值?这是我的代码。
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标签后我该怎么办?我试着做 - 一切都错了。 编辑:似乎在这种情况下不能使用XmlPullParser。它看不到具有不同属性的相等标签之间的区别。我将尝试使用SAXParser的startElement(String uri,String localName,String qName,Attributes attributes)。
答案 0 :(得分:2)
使用布尔标志实现此目的。当你找到你需要的元素=&gt;将flag设置为true并继续解析。当找到该元素的结束标记=&gt;将flag设置为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