2013-11-26 3 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")); 
     } 
    } 
} 

내 문제를 is : getAttributeValue(String, String)을 사용하면 항상을 반환합니다. getAttributeValue(Integer)을 사용하면 문제가 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

장치 : 넥서스 10, 증권 킷캣 4.4

답변

15

이 시도 :

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

이 작동합니다. 나는 이것이 단지'getAttributeNamespace'에 의해 반환 된 것과 같은 네임 스페이스를 원한다고 가정하고 있었다고 생각합니다. – CodingIntrigue

+0

어쨌든이 매개 변수에 전달되는 것으로 간주되는 (또는 보이지 않는 것처럼) 것이 무엇입니까? –

+0

작품을 START_TAG 대시로 사용하십시오. –