android - 我如何通过 XMLPull 解析器获取属性

标签 android xml-parsing android-xmlpullparser

我有一个 xml 文件,我显示了它的一小部分,以显示我想要的内容

<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。

嘿,如果有人给我提示如何获取图片 url。

最佳答案

调用getAttributeValue像下面这样

parser.getAttributeValue(null, "url") 

在您的 if 语句中。确保 getEventType() 等于 START_TAG,因为当您的解析器设置为媒体的 END_TAG 部分时,您当前的 if 语句也会评估为真:内容(这会给你一个 -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"));
}

关于android - 我如何通过 XMLPull 解析器获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7726239/

相关文章:

android - 全屏模式 Android Studio 顶部有黑色条纹

android - 在某些设备上未调用 onLocationChanged

java - PendingIntent 和 AlarmManager

python - lxml + 文件负载 = 随机序列化错误 : IO_WRITE

android-layout - Android LayoutInflater : inflate Binary layout xml

android - 使用 XmlPullParser 解析 channel 节点

java - Android滤镜,改变可绘制颜色

xml - "collapse all"在firefox或chrome中一键所有节点

python - 使用 etree Python 解析 xml

android - OKHTTP 响应 XMLPullParser