Xmlparser.getText()给出null

时间:2014-04-02 06:39:12

标签: java android xml android-xmlpullparser

我试图从预设的xml文件中提取值,当我尝试检查值是什么时,我一直变为空。

if (pulled.equals("preset")) {
    presetName = xmlParser.getAttributeValue(null,"name");
    Log.d(TAG, presetName + " = " + xmlParser.getText());
}

这是xml im从

中提取值
<?xml version="1.0" encoding="utf-8"?>
<sports>
    <sport name="Baseball" paid="false">
        <preset name="Pitching Mound">726.0</preset>
        <preset name="Base Distance">1080.0</preset>
    </sport>
    <sport name="Basketball" paid="false">
        <preset name="NBA Free Throw Line">181.08</preset>
        <preset name="NBA 3pt Line">265.8</preset>
    </sport>
    <sport name="Cricket" paid="true">
        <preset name="Cricket Pitch">2012.0</preset>
        <preset name="Testing">0.8</preset>
    </sport>
</sports>

我做错了吗?

1 个答案:

答案 0 :(得分:2)

在XmlPullParser api上,getText()方法具有以下描述:

  

以String形式返回当前事件的文本内容。价值   返回取决于当前事件类型,例如for   TEXT事件是元素内容(这是next()的典型情况   用来)。有关
的详细说明,请参阅nextToken()的说明   可能为不同类型的事件返回值。

     

注意:如果是ENTITY_REF,则此方法返回实体   替换文本(如果不可用则为null)。这是唯一的情况   其中getText()和getTextCharacters()返回不同的值。

因此,基于此描述,首先必须检查当前xml节点是否为TEXT,以便getText()不返回null。

if (pulled.equals("preset")) {
    presetName = xmlParser.getAttributeValue(null,"name");
    if (xmlParser.getEventType() == XmlPullParser.TEXT) {
       Log.d(TAG, presetName + " = " + xmlParser.getText());
    }
}

希望这有帮助,