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


... 
</doc> 

而且我想提取文本像这样的字符串:如何在android中使用xmlpullparser从嵌套xml中提取文本?

"text text1 text2 text3" 

“项”标签被嵌套在“元素”

进出口使用xmlpullparser在Android的,但我可以用任何其他解析器如果它让事情变得更容易。 tx。

+0

如果字符串是你所追求的,为什么不只是你使用strings.xml文件。它简单得多。 – 2012-02-27 17:06:54

+0

如果你想要没有标签的文本,你可以使用String.replace和正则表达式或者什么 – njzk2 2012-02-27 17:08:35

+0

我不确定你的意思。来自android SDK的strings.xml?这是我需要解析的第三方文件 – butelo 2012-02-27 17:10:51

回答

12

我解析类似的xml文件。这是一个例子。您需要根据需要添加错误检查。

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

它工作!不完全像这样,因为我的XML,但足以让我自己的脚。很多 – butelo 2012-02-28 17:08:21

-3

你看过Android documentation for XMLPullParser吗?它很容易遵循。让我们知道这是否能解决您的问题。

+0

我做的也是xmlpullparser网站。没有找到嵌套标签。 – butelo 2012-02-27 17:37:00

+0

@MikeD Negative。该文档不容易遵循嵌套的xml标签。 – 2014-03-11 22:00:04

+0

根本没有帮助 – pat8719 2015-12-24 14:43:42

相关问题