日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java Dom解析xml

發布時間:2025/3/14 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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();??
  • //??????????System.out.println("*****"+childNodes.getLength());??
  • ????????????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()));??
  • ????????????????????}??
  • ????????????????}??
  • ????????????}//end?for?j??
  • ????????????list.add(book);??
  • ????????}//end?for?i??
  • ????????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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。