2011-10-11 37 views
11

我有一个XML文件,我展示了它的一小部分,展示的内容是什么我想我如何获得使用XMLPull解析器

<media:content medium="image" url="http://msnbcmedia.msn.com/j/MSNBC/Components/Photo/_new/111010-romney-health-4p.thumb.jpg"> 
       <media:credit role="provider">Getty Images file</media:credit> 
       <media:copyright>2010 Getty Images</media:copyright> 
       <media:text><![CDATA[<p><a href="http://www.msnbc.msn.com/id/44854320/ns/politics-decision_2012/"><img align="left" border="0" src="http://msnbcmedia.msn.com/j/MSNBC/Components/Photo/_new/111010-romney-health-4p.thumb.jpg" alt="Mitt Romney speaks at the National Press Club March 5, 2010 in Washington, D.C." style="margin:0 5px 5px 0" /></a></p><br clear="all" />]]></media:text> 
      </media:content> 

属性现在我想要检索的URL标签。我如何做到这一点

我做下面的代码

if(parser.getName().equalsIgnoreCase("media:content")) 
{ 
    Log.d("media count-->",parser.getAttributeCount()+""); 
}  

所以这给了我-1。

嘿,如果有人给我提示如何我可以得到图像的网址。

回答

22

呼叫getAttributeValue像下面

parser.getAttributeValue(null, "url") 

内的if语句。确保getEventType()等于START_TAG,因为当您的解析器设置为媒体的END_TAG部分时:您的当前if语句也将评估为true:content(这会给出-1属性计数)。

编辑 既然你有这么多的麻烦,我希望这个小测试功能,你想要做什么:

public void parseXml() throws XmlPullParserException, IOException 
{ 
    XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
    XmlPullParser parser = factory.newPullParser(); 
    parser.setInput(new StringReader(
      "<media:content medium=\"image\" url=\"http://msnbcmedia.msn.com/j/MSNBC/Components/Photo/_new/111010-romney-health-4p.thumb.jpg\">" 
        + "<media:credit role=\"provider\">Getty Images file</media:credit>" 
        + "<media:copyright>2010 Getty Images</media:copyright>" 
        + "<media:text><![CDATA[<p><a href=\"http://www.msnbc.msn.com/id/44854320/ns/politics-decision_2012/\"><img align=\"left\" border=\"0\" src=\"http://msnbcmedia.msn.com/j/MSNBC/Components/Photo/_new/111010-romney-health-4p.thumb.jpg\" alt=\"Mitt Romney speaks at the National Press Club March 5, 2010 in Washington, D.C.\" style=\"margin:0 5px 5px 0\" /></a></p><br clear=\"all\" />]]></media:text>" 
        + "</media:content>")); 

    while (!"media:content".equals(parser.getName()) && parser.getEventType() != XmlPullParser.START_TAG) { 
     parser.next(); 
    } 
    Log.d("media count -->", parser.getAttributeValue(null, "url")); 
} 
+0

它给出错误空指针异常 –

+0

有没有其他方法可以做到这一点 –

+0

这是做到这一点的正确方法。你是否改变了if语句来检查解析器的事件类型?另外,你确定你正在阅读正确的XML吗? –

2
private String readLink(XmlPullParser parser) throws IOException, XmlPullParserException { 
    parser.require(XmlPullParser.START_TAG, ns, "enclosure"); 
    final String link = parser.getAttributeValue(null, "url"); 
    return link; 
} 

这对我的作品在android系统与XmlPullParser。