使用XmlPullParser从元素获取xml字符串数据

时间:2012-05-03 17:02:55

标签: android android-xml xmlpullparser

例如我有xml文件:

 <names>
        <item value="Hello" />
        <item value="All" />
        <item value="This" />
        <item value="Data" />
 </names>

所以我需要从给定的属性(名称)中获取所有原始数据:

    <item value="Hello" />
    <item value="All" />
    <item value="This" />
    <item value="Data" />

以字符串格式,因此数据应为:

String data = "
<item value="Hello" />
<item value="All" />
<item value="This" />
<item value="Data" />
";

我的代码很和平:

 int state = 0;
    do {
        try {
            state = parser.next();
        } catch (XmlPullParserException e1) {
            e1.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }       
        if (state == XmlPullParser.START_TAG) {
            if (parser.getName().equals("names")) {

// here I need to get the data
// String data = ...

               break;
            }
        }
    } while(state != XmlPullParser.END_DOCUMENT);

那么,如何从字符串格式的xml元素中获取数据?

2 个答案:

答案 0 :(得分:3)

我使用DOM2XmlPullBuilder将XmlPullParser转换为DOM,然后将DOM转换为字符串。代码看起来像这样。

DOM2XmlPullBuilder dom2XmlPullBuilder = new DOM2XmlPullBuilder();
Element element = dom2XmlPullBuilder.parseSubTree(xmlPullParser);
convertNodeToString(element); // implement using a Transformer

答案 1 :(得分:1)

我相信而不是你拥有的地方

if (parser.getName().equals("names")) {...

它应该是这样的:

ArrayList<String> data=new ArrayList<String>();
....
....
if (parser.getName().equals("item")) {
   data.add(xpp.getAttributeValue(0));
}

我是初学者,所以我最近只是搜索这些信息,幸运的是我从commonsguy找到了一个有用的样本(复制并运行良好,没有任何变化) - https://github.com/commonsguy/cw-android/tree/master/Resources/XML