2013-11-29 2 views
0

Я создаю приложение, в котором мне нужно разобрать XML атрибутов. Моя XML выглядит следующим образом:Анализ XML-атрибутов

<ad type="interstitial" animation="none"> 
<interstitial preload="0" autoclose="0" type="url" url="http://account.mobfox.com/activation_vad.php" orientation="portrait">  
</interstitial> 
</ad> 

Я попытался, используя следующий код:

try { 
    XMLParser parser = new XMLParser(); 
    xml = parser.getXmlFromUrl(URL); 

    XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
    XmlPullParser parser1 = factory.newPullParser(); 
    parser1.setInput(new StringReader(xml)); 

    while (!"interstitial".equals(parser1.getName()) 
     && parser1.getEventType() != XmlPullParser.START_TAG) { 
     parser1.next(); 
    } 

    Log.d("URL --> ", parser1.getAttributeValue(null, "url")); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 

Но, я не могу печатать URL из атрибутов. Что я делаю неправильно? Любая помощь будет оценена по достоинству.

+0

Исключения или то, что выводится, может помочь. – drunkenRabbit

+0

Получил 'exceptions' следующим образом:' 11-29 16: 08: 54.124: W/System.err (30206): java.lang.NullPointerException: println нуждается в сообщении 11-29 16: 08: 54.134: W/System .err (30206): \t at android.util.Log.println_native (родной метод) 11-29 16: 08: 54.134: W/System.err (30206): \t at android.util.Log.d (журнал. java: 139) ' – Anupam

ответ

0

Попробуйте это ..

Log.d("URL --> ", ""+parser1.getAttributeValue(null, "url")); 

beacuse может быть, вы передаете параметр в Log.dпустого или нуля

EDIT

URL url = new URL("Your URL"); 
       DocumentBuilderFactory dbf = DocumentBuilderFactory 
         .newInstance(); 
       DocumentBuilder db = dbf.newDocumentBuilder(); 
       Document doc = db.parse(new InputSource(url.openStream())); 

       doc.getDocumentElement().normalize(); 

       NodeList nodeList = doc.getElementsByTagName("ad"); 

       for (int i = 0; i < nodeList.getLength(); i++) { 

        Node node = nodeList.item(i); 

        Element fstElmnt = (Element) node; 
        NodeList nameList = fstElmnt.getElementsByTagName("interstitial"); 
        Element nameElement = (Element) nameList.item(0); 
        nameList = nameElement.getChildNodes();      

        System.out.println("Value : " 
          + (nameElement.getAttribute("url"))); 
       } 
+0

Пробовал этот вывод' null'. – Anupam

+0

@ Анупам, тогда вы не получили ** URL **. url имеет значение null, поэтому ошибка. try my edit – Hariharan

+0

Спасибо @tamilan. Это сработало. Принял ответ. – Anupam

0

Лучше вы можете использовать концепцию xpath. Его легко реализовать. Вот Link ... Кроме того, вы можете запустить запрос онлайн here ...

Смежные вопросы