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

これXmlPullParserStAX-parserのようなものです。これにより、ドキュメントの非常に高速な (そしてメモリ フットプリントが小さい) 解析が可能になります。

その方法は、XML 構造内のすべての要素を単純に反復することです。特定の部分 (開始/終了タグなど) が見つかったときに通知します。これらのパーサーは通常、トップダウンで実装されます。つまり、以前のノードにはアクセスできません

すべての XML ノード (親、親、親などを含む) へのランダムアクセスが必要な場合は、ドキュメント全体をDOMツリーに読み込んで操作する方が適切です。これはより多くのメモリを消費しますが、より柔軟です。


プルパーサーを使用する必要がある場合は、関心のある以前の値を一時変数に保存し、後でそれらにアクセスすることもできます。ただし、それは「元のアイデア」の一部ではありません。

あなたの例では、次のように機能します。

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 に答える