【问题标题】:How I get Attribute using by XMLPull parser我如何通过 XMLPull 解析器获取属性
【发布时间】:2011-12-05 06:57:07
【问题描述】:

我有一个 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。

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

【问题讨论】:

    标签: android xml-parsing android-xmlpullparser


    【解决方案1】:

    拨打getAttributeValue如下

    parser.getAttributeValue(null, "url") 
    

    在你的 if 语句中。确保getEventType() 等于 START_TAG,因为当您的解析器设置为 media:content 的 END_TAG 部分时,您当前的 if 语句也将评估为 true(这将为您提供 -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"));
    }
    

    【讨论】:

    • 你有其他方法吗
    • 这是正确的方法。您是否更改了 if 语句来检查解析器的事件类型?另外,您确定您正在阅读正确的 XML 吗?
    • 这是equals() 的顺序很重要的少数情况之一。确保你使用"constant".equals(parser.getName()) 而不是相反,否则你得到空指针异常......
    【解决方案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;
    }
    

    这适用于我在带有 XmlPullParser 的 android 中。

    【讨论】:

      猜你喜欢
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 2012-07-02
      • 2012-06-08
      • 2013-09-29
      • 2014-03-16
      • 2012-10-16
      • 1970-01-01
      相关资源
      最近更新 更多