Android中的DOM解析方式

來源:互聯網
上載者:User

標籤:android   對象   

1、DOM解析簡介        DOM解析會將XML檔案的內容,以對象樹的形式存放在記憶體中。DOM解析採用了對象樹這種形式儲存,使它易於遍曆,方便的知道上下層節點的情況,這是DOM解析與SAX解析最大的不同之處。SAX解析只能夠知道自己節點的情況,無法得知其它節點的資訊。


2、DOM解析常用方法(1)Document.getDocumentElement():返迴文檔的根項目
(2)Node.getPreviousSibling()、Node.getNextSibling():返回上一個或者下一個同胞元素
(3)Node.getFirstChild()、Node.getLastChild():返回給定節點的第一個子節點或者最後一個節點
(4)Node.getAttribute(attrName):擷取指定屬性的對象


3、DOM解析思路(1)不用說,第一步還是建立一個儲存XML檔案讀取資訊的實體物件
(2)建立一個DocumentBuilderFactory對象,根據它得到DocumentBuilder對象
(3)DocumentBuilder執行個體調用parse方法,傳遞的參數是讀取的檔案流對象

(4)根據節點名稱、屬性值等資訊遍曆XML檔案,儲存起來


4、舉例說明4.1 建立實體:

public class Person {private Integer id;private String name;private Short age;public Person(){}public Person(Integer id, String name, Short age) {this.id = id;this.name = name;this.age = age;}// 省略setter()和getter()方法}


4.2 解析類:

public static List<Person> getPersons(InputStream inStream) throws Exception{List<Person> persons = new ArrayList<Person>();DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document document = builder.parse(inStream);Element root = document.getDocumentElement();NodeList personNodes = root.getElementsByTagName("person");for(int i=0; i < personNodes.getLength() ; i++){Element personElement = (Element)personNodes.item(i);int id = new Integer(personElement.getAttribute("id"));Person person = new Person();person.setId(id);NodeList childNodes = personElement.getChildNodes();for(int y=0; y < childNodes.getLength() ; y++){if(childNodes.item(y).getNodeType()==Node.ELEMENT_NODE){if("name".equals(childNodes.item(y).getNodeName())){String name = childNodes.item(y).getFirstChild().getNodeValue();person.setName(name);}else if("age".equals(childNodes.item(y).getNodeName())){String age = childNodes.item(y).getFirstChild().getNodeValue();person.setAge(new Short(age));}}}persons.add(person);}inStream.close();return persons;}

5、對比SAX解析(1)SAX的事件驅動是回調相應的方法,需要提供回調的方法。

(2)DOM解析中是一種樹形的結構,節點與節點之間都有這等級關係,我們簡單的給出一個圖示如下:

我們對比看看的xml檔案的內容與解析出來的樹形結構圖:


Android中的DOM解析方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.