Android XMLPullParser检查特定子节点
我有这样一个XML:Android XMLPullParser检查特定子节点,android,xml,xmlpullparser,Android,Xml,Xmlpullparser,我有这样一个XML: <node_a> <node_b> <required/> <random_node1/> </node_b> <node_c> <required/> </node_c> <node_d> <random_node2/> </node_d
<node_a>
<node_b>
<required/>
<random_node1/>
</node_b>
<node_c>
<required/>
</node_c>
<node_d>
<random_node2/>
</node_d>
</node_a>
并尝试使用
我希望遍历XML并添加包含子节点的所有节点名。在这个例子中,我的结果列表应该有节点b和节点c
我面临的问题是,如果我做一个解析器.next()
,指针就会向前移动,我不可能返回并再次遍历它们。没有用于检查所有子节点的api
最好的方法是什么。像这样的方法
XmlPullParser paser = Xml.newPullParser();
... other init that you might need ...
parser.next(); // get first token
// In general, you'll need to add error checking such as this:
if (parser.getEventType() != XmlPullParser.START_TAG)
...error...
String parentName = parser.getName(); // this will be "node_a"
parser.next(); // done with first token; fetch next
while (parser.getEventType() == XmlPullParser.START_TAG)
{
String childName = parser.getName(); // will be "node_b" first time through loop
// get nested attributes - e.g. "required"
parser.next();
while (parser.getEventType() == XmlPullParser.START_TAG)
{
String nestedAttribute = parser.getName();
... do something with nestedAttribute ...
parser.next();
}
if (parser.getEventType() != XmlPullParser.END_TAG)
...error...
parser.next(); // consume END_TAG for nested attributes
}
if (parser.getEventType() != XmlPullParser.END_TAG)
...error...
// make sure we're at end of file
parser.next(); // consume END_TAG for node_a
if (parser.getEventType() != XmlPullPaarser.END_DOCUMENT)
...error...
你在这方面有什么进展吗?如果我的回答有帮助,请告诉我。