android之xml資料解析(DOM)

來源:互聯網
上載者:User

 DOM解析是把整個需要解析的xml檔案暫存在記憶體中。

需要解析的XML文檔:

<?xml version="1.0" encoding="UTF-8"?>
<persons>
    <person id="23">
        <name>lee</name>
        <age>30</age>
    </person>
    
    <person id="20">
        <name>leo</name>
        <age>24</age>
    </person>

</persons>  


使用DOM方式解析的java代碼: 

package xml;

import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class DOMForXml {
    
    public static void main(String[] args) {
        //使用DocumentBuilderFactory工廠建立DocumentBuilder對象
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try {
            //產生DocumentBuilder
            DocumentBuilder builder = factory.newDocumentBuilder();
            //調用完這句後XML文檔解析完成,暫存在記憶體中
            Document document = builder.parse("test.xml");
            //獲得根項目
            Element root = document.getDocumentElement();
            //匹配結點,返回結點集
            NodeList personNodes = root.getElementsByTagName("person");
            for(int i=0;i<personNodes.getLength();i++){
                //遍曆結點集
                Element personElement = (Element)personNodes.item(i);
                //獲得結點上的屬性
                String id = personElement.getAttribute("id");
                //輸出
                System.out.println("id:"+id);
                //獲得該節點下面的子節點
                NodeList personChilds = personElement.getChildNodes();
                //遍曆子結點
                for(int j=0;j<personChilds.getLength();j++){
                    //判斷當前結點是否是元素類型結點
                    if(personChilds.item(j).getNodeType()==Node.ELEMENT_NODE){
                        Element childElement = (Element)personChilds.item(j);
                        //判斷當前結點
                        if(childElement.getNodeName().equals("name")){
                            //獲得當前結點對應的值
                            System.out.println("name:"+childElement.getFirstChild().getNodeValue());
                        }else if(childElement.getNodeName().equals("age")){
                            System.out.println("age:"+childElement.getFirstChild().getNodeValue());
                        }
                    }
                }            
            }
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.