生活随笔
收集整理的這篇文章主要介紹了
Java Dom解析xml
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Dom解析是將xml文件全部載入,組裝成一顆dom樹,然后通過節點以及節點之間的關系來解析xml文件,下面結合這個xml文件來進行dom解析。
Xml代碼? <?xml?version="1.0"?encoding="UTF-8"?>?? <books>?? ????<book?id="12">?? ????????<name>thinking?in?java</name>?? ????????<price>85.5</price>?? ????</book>?? ????<book?id="15">?? ????????<name>Spring?in?Action</name>?? ????????<price>39.0</price>?? ????</book>?? </books>?? ?然后結合一張圖來發現dom解析時需要注意的地方
?
在這里當我們得到節點book時,也就是圖中1所畫的地方,如果我們調用它的getChildNodes()方法,大家猜猜它的子節點有幾個?不包 括它的孫子節點,thinking in java這種的除外,因為它是孫子節點。它總共有5個子節點,分別是圖中2、3、4、5、6所示的那樣。所以在解析時,一定要小心,不要忽略空白的地方。
然后看代碼來解析book.xml文件
DomParseService.java
Java代碼? import?java.io.InputStream;?? import?java.util.ArrayList;?? import?java.util.List;?? ?? import?javax.xml.parsers.DocumentBuilder;?? import?javax.xml.parsers.DocumentBuilderFactory;?? ?? import?org.w3c.dom.Document;?? import?org.w3c.dom.Element;?? import?org.w3c.dom.NodeList;?? import?org.w3c.dom.Node;?? ?? import?com.xtlh.cn.entity.Book;?? ?? public?class?DomParseService?{?? ????public?List<Book>?getBooks(InputStream?inputStream)?throws?Exception{?? ????????List<Book>?list?=?new?ArrayList<Book>();?? ????????DocumentBuilderFactory?factory?=?DocumentBuilderFactory.newInstance();?? ????????DocumentBuilder?builder?=?factory.newDocumentBuilder();?? ????????Document?document?=?builder.parse(inputStream);?? ????????Element?element?=?document.getDocumentElement();?? ?????????? ????????NodeList?bookNodes?=?element.getElementsByTagName("book");?? ????????for(int?i=0;i<bookNodes.getLength();i++){?? ????????????Element?bookElement?=?(Element)?bookNodes.item(i);?? ????????????Book?book?=?new?Book();?? ????????????book.setId(Integer.parseInt(bookElement.getAttribute("id")));?? ????????????NodeList?childNodes?=?bookElement.getChildNodes();?? ????????????for(int?j=0;j<childNodes.getLength();j++){?? ????????????????if(childNodes.item(j).getNodeType()==Node.ELEMENT_NODE){?? ????????????????????if("name".equals(childNodes.item(j).getNodeName())){?? ????????????????????????book.setName(childNodes.item(j).getFirstChild().getNodeValue());?? ????????????????????}else?if("price".equals(childNodes.item(j).getNodeName())){?? ????????????????????????book.setPrice(Float.parseFloat(childNodes.item(j).getFirstChild().getNodeValue()));?? ????????????????????}?? ????????????????}?? ????????????} ????????????list.add(book);?? ????????} ????????return?list;?? ????}?? }?? ?Book.java用來組裝數據和盛放數據
Java代碼 ? public?class?Book?{?? ????private?int?id;?? ????private?String?name;?? ????private?float?price;?? ????public?int?getId()?{?? ????????return?id;?? ????}?? ????public?void?setId(int?id)?{?? ????????this.id?=?id;?? ????}?? ????public?String?getName()?{?? ????????return?name;?? ????}?? ????public?void?setName(String?name)?{?? ????????this.name?=?name;?? ????}?? ????public?float?getPrice()?{?? ????????return?price;?? ????}?? ????public?void?setPrice(float?price)?{?? ????????this.price?=?price;?? ????}?? ????@Override?? ????public?String?toString(){?? ????????return?this.id+":"+this.name+":"+this.price;?? ????}?? }?? ?
測試使用單元測試如下ParseTest.java
Java代碼? public?class?ParseTest?extends?TestCase{?? ?? ????public?void?testDom()?throws?Exception{?? ????????InputStream?input?=?this.getClass().getClassLoader().getResourceAsStream("book.xml");?? ????????DomParseService?dom?=?new?DomParseService();?? ????????List<Book>?books?=?dom.getBooks(input);?? ????????for(Book?book?:?books){?? ????????????System.out.println(book.toString());?? ????????}?? ????}?? } ?
轉載于:https://www.cnblogs.com/Free-Thinker/p/4325606.html
與50位技術專家面對面 20年技術見證,附贈技術全景圖
總結
以上是生活随笔 為你收集整理的Java Dom解析xml 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。