如何从android 4.0的XML解析特定属性

如何从android 4.0的XML解析特定属性,android,android-layout,android-intent,Android,Android Layout,Android Intent,我想从xml中访问特定的属性,就像在这个例子中,有2个图像标记,但有2个不同的属性,大小为small和size-medium,那么如何访问medium呢 <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</ima

我想从xml中访问特定的属性,就像在这个例子中,有2个图像标记,但有2个不同的属性,大小为small和size-medium,那么如何访问medium呢

<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>
这是完整的代码

public class loadSomeStuff extends AsyncTask<Void, Void, String>
{
    XPathExpression expr;
    NodeList nl;
    int i;
    String name="test";

    @Override
    protected String doInBackground(Void... params) {
        // TODO Auto-generated method stub

        final String KEY_NAME = "name";
        final String KEY_IMAGE ="image";
        //final String KEY_COST = "cost";
        //final String KEY_DESC = "description";
        String URL = "http://ws.audioscrobbler.com/2.0/?method=artist.search&artist=enrique_iglesias&api_key=b25b959554ed76058ac220b7b2e0a026&limit=" + 1 + "&page=" + 1;
        XmlParser parser = new XmlParser();
        String xml = parser.getXmlFromUrl(URL); // getting XML
        Document doc = parser.getDomElement(xml); // getting DOM element
        //XPathFactory xPathfactory = XPathFactory.newInstance();
        //XPath xpath = xPathfactory.newXPath();
        //try {
        //  expr = xpath.compile("//image[@size=\"large\"]");
            //nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
                    NodeList nl = doc.getElementsByTagName("artist");
             for (i = 0; i < nl.getLength(); i++) 
             {
                    Element e = (Element) nl.item(i);
                     name = parser.getValue(e, KEY_NAME);// name child value
                        image = parser.getValue(e, KEY_IMAGE);
                        System.out.print(image);
                        Log.v(image, "image url");
                        return image;
        } 


        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

            URL thumb_u;
            try {
                thumb_u = new URL(result);
                  Drawable thumb_d = Drawable.createFromStream(thumb_u.openStream(), "src");
                  Toast toast = Toast.makeText(myActionbar.this, image, Toast.LENGTH_LONG);
                  toast.show();
                    icon.setImageDrawable(thumb_d);
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }


    }

here is My Xmlparserfile in which my getvalue  and get elements are defined

public Document getDomElement(String xml){
    Document doc = null;
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    try {

        DocumentBuilder db = dbf.newDocumentBuilder();

        InputSource is = new InputSource();
            is.setCharacterStream(new StringReader(xml));
            doc = db.parse(is); 

        } catch (ParserConfigurationException e) {
            Log.e("Error: ", e.getMessage());
            return null;
        } catch (SAXException e) {
            Log.e("Error: ", e.getMessage());
            return null;
        } catch (IOException e) {
            Log.e("Error: ", e.getMessage());
            return null;
        }
            // return DOM
        return doc;
}


public String getValue(Element item, String str) {
    NodeList n = item.getElementsByTagName(str);
    return this.getElementValue(n.item(0));
}

public final String getElementValue( Node elem ) {
         Node child;
         if( elem != null){
             if (elem.hasChildNodes()){
                 for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){
                     if( child.getNodeType() == Node.TEXT_NODE  ){
                         return child.getNodeValue();
                     }
                 }
             }
         }
         return "";
  } 
public类loadSomeStuff扩展异步任务
{
xpathexpressionexpr;
节点列表nl;
int i;
String name=“test”;
@凌驾
受保护字符串doInBackground(无效…参数){
//TODO自动生成的方法存根
最终字符串键\u NAME=“NAME”;
最终字符串键\u IMAGE=“IMAGE”;
//最终字符串键\u COST=“COST”;
//最终字符串键_DESC=“description”;
字符串URL=”http://ws.audioscrobbler.com/2.0/?method=artist.search&artist=enrique_iglesias&api_key=b25b959554ed76058ac220b7b2e0a026&limit=“+1+”&page=“+1;
XmlParser=新的XmlParser();
字符串xml=parser.getXmlFromUrl(URL);//获取xml
Document doc=parser.getDomeElement(xml);//获取DOM元素
//XPathFactory XPathFactory=XPathFactory.newInstance();
//XPath=xPathfactory.newXPath();
//试一试{
//expr=xpath.compile(“//image[@size=\“large\”]);
//nl=(NodeList)expr.evaluate(doc,XPathConstants.NODESET);
NodeList nl=doc.getElementsByTagName(“艺术家”);
对于(i=0;i
}试试这个:

    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"));
        }
    }
XMLParser=newxmlparser();
字符串URL=”http://ws.audioscrobbler.com/2.0/?method=artist.gettopalbums&artist=akon&api_key=your_api_key";
字符串xml=parser.getXmlFromUrl(URL);//获取xml
Document doc=parser.getDomeElement(xml);//获取DOM元素
NodeList nl=doc.getElementsByTagName(“相册”);
对于(int i=0;i
您是否尝试过parser.getValue(图像,“大小”)?不,我没有使用任何android内置解析器,getValue、getElements方法是用户定义的。您能建议一些修改吗。我只是编辑有问题的代码,您可以找到xmlparserfile代码。请帮助我
    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"));
        }
    }