0

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

1 回答 1

2

XmlPullParser有点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;
}

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

于 2013-05-12T11:29:00.653 回答