Java解析xml——JDOM解析
阿新 • • 發佈:2019-02-08
一、匯入jar包
JDOM不是Java提供的解析xml的方式,所以需要匯入額外的jar包,可以去官方網站下載。
二、JDOM解析例項
books.xml
JDomDemo.java<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id="1"> <name>冰與火之歌</name> <author>喬治馬丁</author> <time>2014</time> <price>89</price> </book> <book id="2"> <name>安徒生童話</name> <price>40</price> <time>2004</time> <language>English</language> </book> </bookstore>
執行結果:public class JDomDemo { public static void main(String[] args) { //1、建立SAXBuilder物件 SAXBuilder saxBuilder = new SAXBuilder(); InputStream in; try { //2、建立輸入流,並將xml檔案載入到輸入流中 in = new FileInputStream("xml/books.xml"); //3、將輸入流載入到SAXBuilder物件中 Document document = saxBuilder.build(in); //4、獲取根元素 Element element = document.getRootElement(); //5、獲取根元素的所有子元素 List<Element> childList = element.getChildren(); //6、遍歷每一個子元素 for (Element child : childList) { System.out.println("===開始讀取第" + (childList.indexOf(child) + 1) + "本書的資訊==="); //7-1、如果不知道屬性有哪些,使用Element.getAttributes獲取屬性,並遍歷屬性 List<Attribute> attrList = child.getAttributes(); for(Attribute attr : attrList) { System.out.println("屬性名:" + attr.getName() + "-->屬性值:" + attr.getValue()); } //7-2、如果知道屬性有哪些,可以直接呼叫Element.getAttributeValue(String name)獲取對應的屬性值 System.out.println("已知有id屬性,id屬性的值為" + child.getAttributeValue("id")); //8、獲取所有子節點,並呼叫Element.getName()方法獲取節點名,呼叫Element.getVlaue()方法獲取節點值 List<Element> list = child.getChildren(); for(Element ele : list) { System.out.println("子節點:" + ele.getName() + "--->子節點的值:" + ele.getValue()); } System.out.println("===讀取第" + (childList.indexOf(child) + 1) + "本書的資訊結束==="); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (JDOMException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
===開始讀取第1本書的資訊===
屬性名:id-->屬性值:1
已知有id屬性,id屬性的值為1
子節點:name--->子節點的值:冰與火之歌
子節點:author--->子節點的值:喬治馬丁
子節點:time--->子節點的值:2014
子節點:price--->子節點的值:89
===讀取第1本書的資訊結束===
===開始讀取第2本書的資訊===
屬性名:id-->屬性值:2
已知有id屬性,id屬性的值為2
子節點:name--->子節點的值:安徒生童話
子節點:price--->子節點的值:40
子節點:time--->子節點的值:2004
子節點:language--->子節點的值:English
===讀取第2本書的資訊結束===