2012-02-27 11 views
5
<doc> 
<element> 
    text 
    <item> 
    text1 
    </item> 
    <item> 
    text2 
    </item> 
    text3 
</element> 
<element> 
    another text 
</element> 


... 
</doc> 

I chcę, aby wyodrębnić tekst ciąg jak poniżej:Jak wyodrębnić tekst z zagnieżdżonego xml przy użyciu xmlpullparser w systemie Android?

"text text1 text2 text3" 

„pozycja” znaczniki są zagnieżdżone wewnątrz „elementem”

Im przy xmlpullparser w Androidzie ale mogę używać innego parsera jeśli to ułatwia sprawę. tx.

+0

Jeśli chodzi o ciągi, po prostu użyj pliku strings.xml. Jest o wiele prostsze. –

+0

jeśli chcesz tekst bez tagów, możesz użyć String.replace z wyrażeniem regularnym lub czymś w rodzaju – njzk2

+0

Nie jestem pewien co masz na myśli. strings.xml z Androida SDK? jest to plik innej firmy, który muszę przetworzyć – butelo

Odpowiedz

12

Analizuję podobne pliki xml. Oto przykład. W razie potrzeby musisz dodać kontrolę błędów.

void loadXML(XmlPullParser xpp) { 
    int eventType = xpp.next(); 
    while (eventType != XmlPullParser.END_DOCUMENT) { 
     if (eventType == XmlPullParser.START_TAG && 0 == XML_ELEMENT_TAG.compareTo(xpp.getName())) { 
      loadElement(xpp); 
     } 

     eventType = xpp.next(); 
    } 
} 

private void loadElement(XmlPullParser xpp) { 

    int eventType = xpp.getEventType(); 
    if (eventType == XmlPullParser.START_TAG && 0 == XML_ELEMENT_TAG.compareTo(xpp.getName())) { 
     eventType = xpp.next(); 
     while (eventType != XmlPullParser.END_TAG || 0 != XML_ELEMENT_TAG.compareTo(xpp.getName())) { 
      if (eventType == XmlPullParser.START_TAG &&  0 == XML_ITEM_TAG.compareTo(xpp.getName())) { 
       loadItem(xpp); 
      } 

      eventType = xpp.next(); 
     } 
    } 
} 

private void loadItem(XmlPullParser xpp) { 

    int eventType = xpp.getEventType(); 
    if (eventType == XmlPullParser.START_TAG && 0 == XML_ITEM_TAG.compareTo(xpp.getName())) { 

     eventType = xpp.next(); 
     while (eventType != XmlPullParser.END_TAG || 0 != XML_ITEM_TAG.compareTo(xpp.getName())) { 

      // Get attributes. 
      String attr = xpp.getAttributeValue(null, XML_MY_ATTR); 
      String text = null; 

      // Get item text if present. 
      eventType = xpp.next(); 
      while (eventType != XmlPullParser.END_TAG || 0 != XML_ITEM_TAG.compareTo(xpp.getName())) { 
       if (eventType == XmlPullParser.TEXT) { 
        text = xpp.getText(); 
       } 

       eventType = xpp.next(); 
      } 

      eventType = xpp.next(); 
     } 
    } 
} 
+0

Zadziałało! Nie do końca tak z powodu mojego XML, ale wystarczająco, by postawić mnie na własnych nogach. tx dużo – butelo

-3

Czy obejrzałeś Android documentation for XMLPullParser? To dość łatwe do naśladowania. Daj nam znać, jeśli to rozwiąże Twój problem.

+0

Zrobiłem i także stronę xmlpullparser. Nie znaleziono tagów zagnieżdżonych. – butelo

+0

@MikeD Negative. Ta dokumentacja nie jest łatwa do zrozumienia dla zagnieżdżonych tagów XML. –

+0

nie był pomocny – pat8719

Powiązane problemy