如何使用xmlpullparser获取父节点值?
<sample get="sample 1">
<child value="child a" />
<child value="child b" />
</sample>
<sample get="sample 2">
<child value="child c" />
<child value="child d" />
</sample>
码
if ( xml.getName().equals("child") ) {
String _value = xml.getAttributeValue(null, "value");
String parent = // GET PARENT NODE VALUE "sample"
}
答案 0 :(得分:1)
XmlPullParser
是之类的 a StAX-parser。它允许非常快速(和小内存占用)解析文档。
它的方式是简单地迭代XML结构中的所有元素。然后它会在找到某些部件(如开/关标签)时通知您。这些解析器通常是自上而下实现的,这意味着无法访问任何以前的节点。
如果您需要随机访问所有XML节点(包括父节点,父节点父节点等),您最好将整个文档读入DOM - 树并正常工作用它。这会占用更多内存,但更灵活。
如果必须使用pull-parser,您还可以将您感兴趣的先前值存储在临时变量中,并在某个地方访问它们。虽然,这不是“原创想法”的一部分。
在您的示例中,它可以像这样工作:
if (xml.getName().equals("sample") {
this.lastParent = xml.getAttributeValue(null, "get"); // Store in class-field
} else if (xml.getName().equals("child") ) {
String _value = xml.getAttributeValue(null, "value");
String parent = this.lastParent;
}
在这里,您可以临时保存父值,并在处理子项时使用它。