0

我想从 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/的示例代码

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

提前谢谢。

4

2 回答 2

2

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

    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
       }
    }
于 2012-11-09T12:58:02.373 回答
1

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

使用属性获取元素

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

         }
于 2012-11-10T09:38:35.490 回答