簡體   English   中英

如何從android中的xml獲取屬性值

[英]How to get attribute value from xml in android

我目前正在解析Xml bye Dom,但我想獲取它們的元素和屬性,但我不知道該如何獲取,我無法獲取元素的名稱,每個元素的值和屬性也可以幫助我。

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

XML文件

 <AvailableProducts> <Roomtype IDRoom="1" Code="A1D" NormBed="1" Maxbed="2" Category="3" Order="4"><Description Name="Deluxe Double Room" Text="" IDLanguage="4"/> <Roomtype IDRoom="1" Code="A1D" NormBed="1" Maxbed="2" Category="3" Order="4"><Description Name="Deluxe Double Room" Text="" IDLanguage="4"/></AvailableProducts> 

起初,您的xml看起來不像DOM樹。 DOM由包含多個子元素的根元素(例如'AvailableProducts')組成。 為了像代碼所建議的那樣解析子級,您需要為getElementsByTagName()方法提供根元素的標記名:

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

看看這個那個

否則,可以考慮使用XMLPullParser ,它稍微復雜一些,但是您可以准確地定義所需的內容。

我希望這能幫到您。 干杯。

編輯:xml現在看起來更好。 我更新了答案中的代碼。 如果正確接收了xml數據,則應該能夠像Fildor建議的那樣使用

e.getAttribute("AttribName")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM