2

単純なXMLファイルがあります。

<Parent id=1>
<Child>1</Child>
<Child>2</Child>
</Parent>
<Parent id=2>
<Child>3</Child>
<Child>4</Child>
</Parent>

親ID=2の子タグの値を取得するにはどうすればよいですか?これが私のコードです。

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader(readFileAsString(xmlFilename)));

int event;
while ((event = xpp.next()) != XmlPullParser.END_DOCUMENT)
{
//found <Parent id=2> 
    if (event == XmlPullParser.START_TAG && xpp.getName().equalsIgnoreCase("Parent")
            && Integer.parseInt(xpp.getAttributeValue(null, "id")) == 2)
    {

        //TODO - what's next?

    }
}

TODOラベルの後に何をすればよいですか?私はdo-whileを試しました-すべてが間違っていました。編集:この場合、XmlPullParserは使用できないようです。異なる属性を持つ等しいタグの違いを確認することはできません。SAXParserのstartElement(String uri、String localName、String qName、Attributes属性)を使用してみます。

4

1 に答える 1

2

ブールフラグでこれを達成しました。要素が見つかったら、=>フラグをtrueに設定して、解析を続行する必要があります。その要素の終了タグが見つかったら=>フラグをfalseに設定します。

if(flag)
{
    if (event == XmlPullParser.START_TAG && xpp.getName().equalsIgnoreCase("Child"))
      System.out.println(xpp.getText());
}
}
}
if (event == XmlPullParser.END_TAG && xpp.getName().equalsIgnoreCase("Level"))
{
    flag = false;
}

出力:3 4

于 2013-03-04T11:50:50.663 に答える