考虑这个 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,但是当父 Person
元素有一个 id
时,我如何限制 XmlPullParser 循环只查看 Cars
元素> 101
?
最佳答案
您可以使用标志来了解解析器当前的位置,例如:
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();
}
关于android - XmlPullParser - 从具有特定父元素的元素中提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24784360/