2011-10-11 19 views
11

Tôi có một file xml và tôi thấy một phần nhỏ của nó, để hiển thị nội dung những gì tôi muốnLàm thế nào tôi có được thuộc tính sử dụng bởi XMLPull phân tích cú pháp

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

Bây giờ tôi muốn lấy lại tab URL. Làm thế nào tôi làm điều này

tôi làm đoạn mã sau

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

Vì vậy, đây mang lại cho tôi -1.

Hey nếu có ai cho tôi gợi ý về cách tôi có thể lấy url hình ảnh.

Trả lời

22

Gọi getAttributeValue như sau

parser.getAttributeValue(null, "url") 

bên trong câu lệnh if của bạn. Đảm bảo getEventType() bằng START_TAG vì câu lệnh if hiện tại của bạn cũng sẽ được đánh giá là true khi trình phân tích cú pháp của bạn được đặt thành phần END_TAG của phương tiện: nội dung (sẽ cung cấp cho bạn một thuộc tính -1).

EDIT Kể từ khi bạn đang gặp rất nhiều rắc rối, tôi hy vọng chức năng thử nghiệm nhỏ này làm những gì bạn muốn:

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

nó cung cấp cho lỗi ngoại lệ con trỏ null –

+0

có bạn phương pháp nào khác để làm điều đó –

+0

Đó là phương pháp chính xác để thực hiện. Bạn có thay đổi câu lệnh if của mình để kiểm tra loại sự kiện của trình phân tích cú pháp không? Ngoài ra, bạn có chắc là bạn đang đọc đúng XML không? –

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; 
} 

này làm việc cho tôi trong Android với XmlPullParser.

Các vấn đề liên quan