2014-07-14 48 views
0

我正在開發一個使用外部數據源(如服務器)的數據的android應用程序。數據使用DOM解析器檢索。我的實際問題是在android中讀取xml標籤的屬性

<enclosure url="http://news.oneindia.in/img/2014/07/15-tripura-map-600.jpg" type="image/jpeg" length="810000"/> 

從標記外殼我想檢索我的應用程序的網址。

當我檢索機箱標籤時,我收到空。
那麼我怎麼能從標籤內部獲取數據呢?

<item> 
    <title>Modi in Brazil, Israel airstrike: Follow News In Brief: July 15</title> 
    <link>http://news.oneindia.in/india/follow-news-brief-july-15-1482982.html</link> 
    <guid>http://news.oneindia.in/india/follow-news-brief-july-15-1482982.html</guid> 
    <description>Bangalore, July 15: Follow news in brief for the day: 2:40 pm:&amp;nbsp;Lalu, Nitish to forge alliance for Bihar Assembly by-polls 2:22 pm:&amp;nbsp;World Cup 2014 champions German team arrives in home country, receives grand welcome 1:50 pm:&amp;nbsp;30 die of </description> 
    <enclosure url="http://news.oneindia.in/img/2014/07/15-pm-narendramodi-brics.jpg" type="image/jpeg" length="810000"/> 
    <pubDate>Tue, 15 Jul 2014 08:48:32 +0530</pubDate> 
</item> 
<item> 
    <title>Heavy rain alert for Uttarakhand</title> 
    <link>http://news.oneindia.in/india/heavy-rain-alert-uttarakhand-1482983.html</link> 
    <guid>http://news.oneindia.in/india/heavy-rain-alert-uttarakhand-1482983.html</guid> 
    <description>Lucknow/Dehradun, July 15: An alert has been sounded in Uttarakhand after incessant rains in many parts of the state for the last 48 hours, officials said Tuesday.The hill state is likely to experience very heavy rainfall Wednesday, the Met Office said. </description> 
    <enclosure url="http://news.oneindia.in/img/2014/07/15-dehradun-map-600.jpg" type="image/jpeg" length="810000"/> 
    <pubDate>Tue, 15 Jul 2014 08:48:06 +0530</pubDate> 
</item> 
<item> 
    <title>Former US president Bill Clinton arrives in Jaipur</title> 
    <link>http://news.oneindia.in/india/former-us-prez-bill-clinton-arrives-in-jaipur-1482985.html</link> 
    <guid>http://news.oneindia.in/india/former-us-prez-bill-clinton-arrives-in-jaipur-1482985.html</guid> 
    <description>Jaipur, July 15: Former US President Bill Clinton arrived here on Monday night on a tour during which he will visit a kitchen being run for schoolchildren by an NGO. Clinton landed with his delegation at the international airport at </description> 
    <enclosure url="http://news.oneindia.in/img/2014/07/15-bill-clinton-latest.jpg" type="image/jpeg" length="810000"/> 
    <pubDate>Tue, 15 Jul 2014 01:25:31 +0530</pubDate> 
</item> 

從上面的xml我想提取內部的內容。

這裏是我的Java代碼

public class Second_Listview extends Activity { 

private GestureDetector gestureDetector; 
// All static variables 
// static final String URL = "http://ibnlive.in.com/ibnrss/top.xml"; 
String URL; 
// XML node keys 
static final String KEY_SONG = "item"; // parent node 
static final String KEY_ID = "description"; 
static final String KEY_TITLE = "title"; 
static final String KEY_ARTIST = "pubDate"; 
static final String KEY_DURATION = "link"; 
static final String KEY_DIS = "description"; 
static final String KEY_THUMB_URL = "enclosure"; 

ListView list; 
LazyAdapter adapter; 
String descrption; 
String image; 
String main_title; 

ProgressBar progress; 

String KEY_IMAGE; 
String imgurl; 


// >>> in case of data connection failure 

// flag for Internet connection status 
Boolean isInternetPresent = false; 

// Connection detector class 
ConnectionDetector cd; 



@Override 
public void onCreate(Bundle savedInstanceState) { 


    gestureDetector = new GestureDetector(
      new SwipeGestureDetector()); 

    //reciving intent data 

    Intent intent = getIntent(); 
    main_title = getIntent().getExtras().getString("title_key").trim(); 

    super.onCreate(savedInstanceState); 
    setTitle(main_title); // setting title bar title 
    setContentView(R.layout.main); 
    progress=(ProgressBar)findViewById(R.id.progressBarMain); 
    progress.setVisibility(View.GONE); 
    //reciving intent data 



    String page_id = getIntent().getExtras().getString("webpage_key"); //reciving intent data 

    URL = page_id.trim(); // trimming data to avoid space 

    ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); 

    XMLParser parser = new XMLParser(); 
    String xml = parser.getXmlFromUrl(URL);// getting XML from URL 

    Document doc = parser.getDomElement(xml); // getting DOM element 

    NodeList nl = doc.getElementsByTagName(KEY_SONG); 
    // looping through all song nodes <song> 
    for (int i = 0; i < nl.getLength(); i++) { 


     // creating new HashMap 
     HashMap<String, String> map = new HashMap<String, String>(); 
     Element e = (Element) nl.item(i); 

     descrption = parser.getValue(e, KEY_THUMB_URL); 


     if (e.getNodeName().contains("enclosure") && e.hasAttributes()){ 
       imgurl= e.getAttribute("url").toString(); 


     } 

     System.out.println("VALUE INSIDE>>>>>>>>>>> "+url+" <<<< DDDD"+ descrption); 

     // adding each child node to HashMap key => value 
     map.put(KEY_ID, parser.getValue(e, KEY_ID)); 
     map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE)); 
     map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST)); 
     map.put(KEY_DURATION, parser.getValue(e, KEY_DURATION)); 
     map.put(KEY_DIS, parser.getValue(e, KEY_DIS)); 
     map.put(KEY_IMAGE, imgurl); 

如在後指定我進去descrption值爲null

+0

您使用哪些代碼「檢索機箱標籤」?通過閱讀你的問題很難幫助你。 – f1sh

回答

0

爲了得到外殼標籤,你可以做一些類似的url屬性的值 Parsing attribute in XML with DOM parser 。以下是一個示例。

NamedNodeMap attributes = fstElmnt.getAttributes(); 
Node enclosureItem = attributes.getNamedItem("url"); 

這本來是巨大的,如果您已發佈您的解析代碼,那麼可能已經發布例子,你可以直接在代碼中使用。

====================根據您的代碼編輯===================== ====

Element e = (Element) nl.item(i); 

//if (e.getNodeName().contains("enclosure") && e.hasAttributes()){ 
    String url = e.getAttribute("url").toString(); 
//} 
+0

我剛剛更新了我的問題,並提供了詳細的解釋,請爲我提供一個很好的解決方案 – Nikhil

+0

感謝您的幫助,但它仍然在URL中獲得Null值。我該怎麼辦 ? – Nikhil

+0

你可以在上面更新你的代碼,這樣我可以看到你的邏輯更新的實現? –