2013-11-26 15 views
6

मैं निम्नलिखित XML संरचना मेरी संपत्ति में संग्रहीत/xml फ़ोल्डर:XmlPullParser getAttributeValue रिटर्न अशक्त

<?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) का उपयोग ठीक काम करता है। मैं क्या गलत कर रहा हूं?

डिवाइस: नेक्सस 10, स्टॉक किटकैट 4.4

उत्तर

15

इस प्रयास करें:

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

यह काम करता है। मुझे लगता है कि मैं बस यह मान रहा था कि यह वही नेमस्पेस चाहता था जैसा कि 'getAttributeNamespace' द्वारा लौटाया गया था। – CodingIntrigue

+0

वैसे भी इस पैरामीटर में पास होने (या ऐसा लगता है, गुजरना) क्या होना चाहिए? –

+0

काम करता है बस इसे START_TAG मामले में उपयोग करें –

संबंधित मुद्दे