2014-04-02 30 views
1

我试图从预设的xml文件中提取值,并且当我尝试检查值是什么时,我总是收到空值。Xmlparser.getText()给出null

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> 

拉动的价值难道我做错了什么?

+2

我之前http://stackoverflow.com/questions/22626450/looping-an-xml-parser-till-a-tag-is-done回答了这个问题,它应该工作 – Raghunandan

回答

2

在XmlPullParser API,所述的getText()方法有以下的说明:

返回当前事件作为字符串的文本内容。返回的值 取决于当前事件类型,例如对于 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()); 
    } 
} 

希望这有助于

相关问题