2013-11-26 24 views
6

我有/存儲在我的資產以下XML結構的XML文件夾:XmlPullParser getAttributeValue返回null

<?xml version="1.0" encoding="utf-8"?> 
<homescreen> 
    <homeitem name="Name1" 
       subtext="Description1" 
       icon="iconresource1" /> 
    <homeitem name="Name2" 
       subtext="Description2" 
       icon="iconresource2" /> 
    <homeitem name="Name3" 
       subtext="Description3" 
       icon="iconresource3" /> 
</homescreen> 

我使用的是XmlPullParser閱讀每一個人homeitem

int event; 
String TAG_ITEM = "homeitem"; 
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) { 
    if (event == XmlPullParser.START_TAG) { 
     String tag = parser.getName(); 
     if (TAG_ITEM.equals(tag)) { 
      // Works - Logs "Name1" 
      Log.d(LOG_NAME, parser.getAttributeValue(0)); 

      // Works - Logs "name" 
      Log.d(LOG_NAME, parser.getAttributeName(0)); 

      // Works - Logs "" 
      Log.d(LOG_NAME, parser.getAttributeNamespace(0)); 

      // Fails - Logs null 
      Log.d(LOG_NAME, parser.getAttributeValue(XmlPullParser.NO_NAMESPACE, "name")); 
     } 
    } 
} 

我的問題是:使用getAttributeValue(String, String)總是返回空。使用getAttributeValue(Integer)工作正常。我究竟做錯了什麼?

設備:的Nexus 10,股票奇巧4.4

回答

15

試試這個:

parser.getAttributeValue(null, "name"); 
+1

這工作。我想我只是假設這需要與'getAttributeNamespace'返回的相同的命名空間。 – CodingIntrigue

+0

無論如何,應該傳遞什麼(或者看起來不傳遞)到這個參數? –

+0

Works只是在START_TAG的情況下使用它 –