考虑这个XML。它描述了人员和他们拥有的汽车的清单。
<People>
<Person id="100">
<Name>Bob</Name>
<Cars>
<Car>
<Make>Toyota</Make>
<Model>Celica</Model>
</Car>
</Cars>
</Person>
<Person id="101">
<Name>Jim</Name>
<Cars>
<Car>
<Make>Ford</Make>
<Model>Pinto</Model>
</Car>
<Car>
<Make>Dodge</Make>
<Model>Viper</Model>
</Car>
</Cars>
</Person>
</People>
我已经创建了一个解析器,它将通过并获取:
ID: 100, Name: Bob
ID: 101, Name: Jim
但是我正在努力解决这个问题并抓住嵌套的元素,这些元素是特定父母的孩子。
while (eventType != XmlPullParser.END_DOCUMENT) {
String name = null;
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
// do something
break;
case XmlPullParser.START_TAG:
name = parser.getName();
if (name.equalsIgnoreCase("Cars")) {
// how do i restrict this to only cars under person with ID 101?
}
让我们说我只想知道吉姆有什么样的车。我知道Jim的ID是101,但是当父Cars
元素Person
为{{1}时,如何限制XmlPullParser循环仅查看id
元素}}?
答案 0 :(得分:3)
您可以使用标志来了解解析器当前的位置,例如:
boolean personFound = false;
boolean carsFound = false;
while (eventType != XmlPullParser.END_DOCUMENT) {
if (XmlPullParser.START_TAG && parser.getName().equals("Person") && parser.getAttributeValue(0).equals("101")) {
personFound = true;
}
if (personFound && XmlPullParser.START_TAG && parser.getName().equals("Cars")){
carsFound = true
}
if (carsFound) {
// Do something useful
}
if (carsFound && XmlPullParser.END_TAG && parser.getName().equals("Cars"){
break;
}
eventType = parser.next();
}