Java android中如何从xml中获取属性值

Java android中如何从xml中获取属性值,java,android,xml,dom,Java,Android,Xml,Dom,我目前正在通过Dom解析Xml,但我想获取元素及其属性,我不知道如何获取,我无法获取元素名称和值,每个元素的属性也可以帮助我 private void parsexml(String xmlresult){ ListView myList=(ListView)findViewById(android.R.id.list); menuItems = new ArrayList<HashMap<String, String>>(); XmlPa

我目前正在通过Dom解析Xml,但我想获取元素及其属性,我不知道如何获取,我无法获取元素名称和值,每个元素的属性也可以帮助我

 private void parsexml(String xmlresult){

    ListView myList=(ListView)findViewById(android.R.id.list);

    menuItems = new ArrayList<HashMap<String, String>>();

    XmlParser parser = new XmlParser();
    Document doc = parser.getDomElement(xmlresult); // getting DOM element
    NodeList nl = doc.getElementsByTagName("*");



    // looping through all item nodes <item>
    for (int i = 0; i < nl.getLength(); i++) {

        Node nNode = nl.item(i);
        if (nNode.getNodeType() == Node.ELEMENT_NODE) {

            Element e = (Element) nl.item(i);

            Element eElement = (Element) nNode;
            String tagname = eElement.getTagName();
            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();

            // adding each child node to HashMap key => value
            map.put(KEY_ID, parser.getValue(e, KEY_ID));
            map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
            map.put(KEY_COST, "Rs." + parser.getValue(e, KEY_COST));
            map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
            map.put(KEY_categroy, parser.getValue(e, KEY_categroy));
            map.put(KEY_order, parser.getValue(e, KEY_order));
            // adding HashList to ArrayList
            menuItems.add(map);
        }
    }
    // Adding menuItems to ListView
    ListAdapter adapter = new SimpleAdapter(this, menuItems,
            R.layout.list_item,
            new String[] { KEY_NAME, KEY_DESC, KEY_COST,KEY_categroy,KEY_order }, new int[] {
            R.id.name, R.id.desciption, R.id.cost,R.id.categroy,R.id.order });

    setListAdapter(adapter);
    ((BaseAdapter)adapter).notifyDataSetChanged();
}
private void parsexml(字符串xmlresult){
ListView myList=(ListView)findViewById(android.R.id.list);
menuItems=newarraylist();
XmlParser=新的XmlParser();
Document doc=parser.getDomeElement(xmlresult);//获取DOM元素
NodeList nl=doc.getElementsByTagName(“*”);
//循环通过所有项目节点
对于(int i=0;ivalue
put(KEY_ID,parser.getValue(e,KEY_ID));
put(KEY_NAME,parser.getValue(e,KEY_NAME));
map.put(KEY_COST,“Rs.”+parser.getValue(e,KEY_COST));
put(KEY_DESC,parser.getValue(e,KEY_DESC));
put(KEY_categroy,parser.getValue(e,KEY_categroy));
put(KEY_-order,parser.getValue(e,KEY_-order));
//将哈希列表添加到ArrayList
menuItems.add(地图);
}
}
//向ListView添加菜单项
ListAdapter=new SimpleAdapter(此,菜单项,
R.layout.list_项目,
新字符串[]{KEY_NAME,KEY_DESC,KEY_COST,KEY_categrouy,KEY_order},新int[]{
R.id.name、R.id.description、R.id.cost、R.id.categroy、R.id.order});
setListAdapter(适配器);
((BaseAdapter)adapter).notifyDataSetChanged();
}
xml


起初,xml看起来不像DOM树。DOM由包含多个子元素的根元素(例如“AvailableProducts”)组成。为了像代码所建议的那样解析子元素,需要为getElementsByTagName()方法提供根元素的标记名:

NodeList nl = doc.getElementsByTagName("AvailableProducts");
看一看或看一看

否则,请考虑使用一个更复杂的方法,但是你可以精确地定义你想要的。 我希望这对你有帮助。干杯

编辑:xml现在看起来更好了。我更新了答案中的代码。如果正确接收到xml数据,您应该能够按照Fildor的建议获取属性

e.getAttribute("AttribName")

您是否尝试过e.getAttribute(“AttribName”)?我在对e.getAttribute(“AttribName”)进行权限设置时出现错误键入这是获取值方法公共字符串getValue(元素项,字符串str){NodeList n=item.getElementsByTagName(str);返回此.getElementValue(n.item(0));}您不需要该值,你需要属性…是的,我想循环元素“roomtype”的属性并显示在列表视图中查看此链接了解我的问题和我想做的所有事情的代码你需要在元素上调用getAttributes。我轻率地假设它只是一个片段。但如果它是完整的文件,这将解释很多:)是的,谢谢@Fildor的编辑。。。我意识到结尾标签也不见了。