使用xmlpullparser获取父节点值

时间:2013-05-12 11:02:07

标签: android

如何使用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"
}

1 个答案:

答案 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;
}

在这里,您可以临时保存父值,并在处理子项时使用它。