Подтвердить что ты не робот

Как получить атрибут, используя парсер XMLPull

У меня есть 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="#" onclick="location.href='http://www.msnbc.msn.com/id/44854320/ns/politics-decision_2012/'; return false;"><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-адрес изображения.

4b9b3361

Ответ 1

Вызвать getAttributeValue следующим образом

parser.getAttributeValue(null, "url") 

внутри вашего оператора if. Убедитесь, что значение getEventType() равно START_TAG, так как ваш текущий оператор if также будет оценивать значение true, если ваш парсер установлен в часть END_TAG вашего медиа: контент (который даст вам счетчик -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"));
}

Ответ 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.