【问题标题】:Parse XML data from url using DOM Parser使用 DOM Parser 从 url 解析 XML 数据
【发布时间】:2012-10-29 18:49:45
【问题描述】:

我想从 url 解析 xml 文件:

http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=cher&api_key=5d6ce941674603e4bb75cfad6cfa13b7

我想解析文件的以下标签:

<artist>
<name>Cher</name>
<image size="medium">http://userserve-ak.last.fm/serve/64/62286415.png</image>
</artist>

但我不知道如何只获取这两个标签的值。

我已经尝试了示例代码 http://www.androidhive.info/2011/11/android-xml-parsing-tutorial/

但它没有显示解析具有不同属性值的相同标签。 谁能指导我如何做到这一点?

提前谢谢。

【问题讨论】:

    标签: android xml xml-parsing android-xml domparser


    【解决方案1】:

    从您提供的链接中,我只提取了一小部分:

        XMLParser parser = new XMLParser();
        String xml = parser.getXmlFromUrl(URL); // getting XML
        Document doc = parser.getDomElement(xml); // getting DOM element
    
        NodeList nl = doc.getElementsByTagName("artist");
        // looping through all item nodes <artist>
        for (int i = 0; i < nl.getLength(); i++) {
           Element e = (Element) nl.item(i);
           String name = parser.getValue(e, "name"));
           String image = parser.getValue(e, "image")); 
    
           //if you want the artist 'Cher' sigh ;)
           if (name.equals("Cher")){
              //do whatever you want
           }
        }
    

    【讨论】:

      【解决方案2】:

      谢谢。我从这个网址解决了我的问题:

      Getting element using attribute

      if(str.equals("image"))
               {
                   n = item.getElementsByTagName(str);
      
                   for (int i = 0; i < n.getLength(); i++) {
                          Node subNode = n.item(i);
      
                          if (subNode.hasAttributes()) {
                              NamedNodeMap nnm = subNode.getAttributes();
      
                              for (int j = 0; j < nnm.getLength(); j++) {
                                  Node attrNode = nnm.item(j);
      
                                  if (attrNode.getNodeType() == Node.ATTRIBUTE_NODE) {
                                      Attr attribute = (Attr) attrNode;
      
                                     if( attribute.getValue().equals("medium"))
                                     {
                                         return this.getElementValue(n.item(i));
                                     }
                                  }
                              }               
                          }
                      }
      
               }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多