2014-04-02 50 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()); 
    } 
} 

希望這有助於

相關問題