如何使用XmlResourceParser访问子元素

时间:2011-12-20 14:29:45

标签: android

我创建了一个XML文件并将其放在我的“res”文件夹中。我决定使用XmlResourceParser来解析XML文件。

我的问题是,我如何进入下一级元素?具体来说,我如何访问子节点?

由于

我的XML文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<encounters>
    <creature id="1" type="humanoid" name="Jon" race="Human" gender="M" age="20" alignment="NE">
        <appearance condition="ragged" skinColor="white" hairColor="brown" size="M" height="70" weight="170"></appearance>
        <stats hp="20" ac="5" ap="5" mp="10" str="11" dex="15" int="15"></stats>
        <inventory wp1="sword" wp2="knife" arm1="leather" arm2="bracers"></inventory>
        <magic attSp1="fireball" attSp2="iceBall" defSp1="minor Shield" defSp2="major Shield"></magic>
        <treasureItems gp="10" sp="25" item1="ring of protection + 1"></treasureItems>
    </creature>
</encounters>

到目前为止我的代码看起来像这样:

    //  ***** BEGIN XML PARSING ***** 
    try {
        while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {
            if (xrp.getEventType() == XmlResourceParser.START_TAG) {
                String s = xrp.getName();

                if (s.equals("creature")) {
                    encounterID = xrp.getAttributeResourceValue(null, "id", 0);
                    encounterType = xrp.getAttributeValue(null, "type");
                    encounterName = xrp.getAttributeValue(null, "name");
                    encounterRace = xrp.getAttributeValue(null, "race");
                    encounterGender = xrp.getAttributeValue(null, "gender");
                    encounterAge = xrp.getAttributeResourceValue(null, "age", 0);
                    encounterAlignment = xrp.getAttributeValue(null, "alignment");
                }
            }
        }
    } catch (XmlPullParserException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
        // ***** END XML PARSING ***** 

1 个答案:

答案 0 :(得分:3)

以下是有关如何使用XmlPullParser documentation的文档。

据说你想使用xrp.next()函数将解析器移动到下一个元素。这将按照它们出现的顺序循环遍历XML文档中的所有元素。如果您有子元素,则解析器将在触摸父元素的START_TAG后到达。