在android中读取xml标记属性

时间:2014-07-14 07:46:08

标签: java android xml-parsing

我正在开发一个Android应用程序,它使用来自外部源(如服务器)的数据。使用DOM解析器检索数据。我的实际问题是

 <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

1 个答案:

答案 0 :(得分:0)

要获取enclosure标记的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();
//}
相关问题