0

我如何在 android 上解析这个 xml 文件以获取大图像的 Url

<image size="small">http://userserve-ak.last.fm/serve/34/62210477.png</image> <image size="medium">http://userserve-ak.last.fm/serve/64/62210477.png</image>
<image size="large">http://userserve-ak.last.fm/serve/126/62210477.png</image>

在 ICS 和 JellyBean 等较新的 Android 版本上访问图像大小 =“大”的 url 的最佳方法是什么 *已编辑问题 * 作为答案中提供的链接 我现在根据我的 xml 文件进行了一些更改 ii 获取数据但我想访问 url大图像我需要做什么修改才能获得大图像 url

修改代码(我认为)

@Override
public void startElement(String uri, String localName, String qName,
        Attributes attributes) throws SAXException {
    elementOn = true;
    if (localName.equals("artist"))
    {
        data = new XMLGettersSetters();
    } else if (localName.equals("image")) {
        /** 
         * We can get the values of attributes for eg. if the CD tag had an attribute( <CD attr= "band">Akon</CD> ) 
         * we can get the value "band". Below is an example of how to achieve this.
         * 
         * String attributeValue = attributes.getValue("attr");
         * data.setAttribute(attributeValue);
         * 
         * */
    }
}
/** 
 * This will be called when the tags of the XML end.
 **/
@Override
public void endElement(String uri, String localName, String qName)
        throws SAXException {
    elementOn = false;
    /** 
     * Sets the values after retrieving the values from the XML tags
     * */ 
    if (localName.equalsIgnoreCase("name"))
        data.setTitle(elementValue);
    else if (localName.equalsIgnoreCase("listeners"))
        data.setArtist(elementValue);
    else if (localName.equalsIgnoreCase("url"))
        data.setCountry(elementValue);
    else if (localName.equalsIgnoreCase("image"))
        data.setCompany(elementValue);
    }
/** 
 * This is called to get the tags value
 **/
@Override
public void characters(char[] ch, int start, int length)
        throws SAXException {
    if (elementOn) {
        elementValue = new String(ch, start, length);
        elementOn = false;
    }
}

请帮帮我谢谢

4

4 回答 4

1

尝试这个:

    XMLParser parser = new XMLParser();
    String URL = "http://ws.audioscrobbler.com/2.0/?method=artist.gettopalbums&artist=akon&api_key=your_api_key";
    String xml = parser.getXmlFromUrl(URL); // getting XML
    Document doc = parser.getDomElement(xml); // getting DOM element

    NodeList nl = doc.getElementsByTagName("album");

    for (int i = 0; i < nl.getLength(); i++) {
        Element e = (Element) nl.item(i);
        Log.e("name", parser.getValue(e, "name"));
        NodeList k = e.getElementsByTagName("image");
        for (int j = 0; j < k.getLength(); j++) {
            Element e1 = (Element) k.item(j);
            if(e1.getAttribute("size").equals("large"))
            Log.e("ImageURL", parser.getValue(e1, "image"));
        }
    }
于 2013-04-10T15:13:30.683 回答
0

为此,您可以使用 Sax 或 dom 解析器,我推荐使用 Sax 解析器,因为它的内存占用少且速度快。

有关示例的更多详细信息,请查看此链接

@Override 
  public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {

      //do some checking.

      if(atts.getValue("size").equals("large")&&localName.equals("Image"))
      {
            //do some action
      }; 

  } 
于 2012-09-24T10:10:46.467 回答
0
    public static String getTextValue(Element ele, String tagName) {
    String textVal = "";
    NodeList nl = ele.getElementsByTagName(tagName);
    if(nl != null && nl.getLength() > 0) {
        Element el = (Element)nl.item(0);
        if(el.getFirstChild()!=null)    
        {
            textVal = el.getFirstChild().getNodeValue();
        }
    }
    return textVal;
}

or try using ele.getAttribute(tagName)

在上述方法中输入您的元素节点和标记名“image”...

于 2012-09-24T10:12:24.877 回答
0

将图像的 url 从 xml 的 url 解析成一个字符串,并将该字符串用于任何目的。

您可以从 jsoup.org 查看 jsoup。我在几个项目中使用它并且对它很满意。

于 2012-09-24T10:13:06.043 回答