2013-11-26 17 views
6

Ben benim varlıklar saklanan aşağıdaki XML yapı/xml klasörü:XmlPullParser getAttributeValue döndüren boş

<?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> 

Bir XmlPullParser kullanarak her homeitem okuyorum:

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")); 
     } 
    } 
} 

Sorunum : getAttributeValue(String, String)öğesinin kullanılması her zaman null değerini döndürür. getAttributeValue(Integer) kullanımı iyi çalışıyor. Neyi yanlış yapıyorum?

Cihaz: Nexus 10 Stok KitKat 4.4

cevap

15

bu deneyin:

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

Bu çalışır. Ben sadece bu getAttributeNamespace' tarafından döndürülen aynı ad alanı istediğini varsayarak sanırım. – CodingIntrigue

+0

Bu parametreye ne şekilde geçiyor (veya göründüğü gibi geçmiyor)? –

+0

İşler sadece START_TAG örneğinde kullanılır –

İlgili konular