-->

Android的XmlPullParser - 如何解析这个XML示例文件?(Android Xm

2019-10-17 18:46发布

我有简单的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标签后做什么? 我试图做的,而 - 一切都错了。 编辑:看来,XmlPullParser不能在这种情况下使用。 它不能看到不同属性等于变量之间的区别。 我会尝试使用的SAXParser的的startElement(URI字符串,字符串的localName,字符串QNAME,属性的属性)。

Answer 1:

布尔标志实现这一点。 当你找到的元素,你需要=>设置标志为true,并继续解析。 当发现关闭该元件=>设定标志的标签为假。

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



文章来源: Android XmlPullParser - how to parse this XML sample file?