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>

しかし、これら 2 つのタグのみの値を取得する方法がわかりません。

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

ありがとう。私はこのURLから私の問題を解決しました:

属性を使用して要素を取得する

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 に答える