org.w3c.dom.Document
java
使用: DocumentBuilderFactory/DocumentBuilderapp
對如下xml文件進行操做:dom
<?xml version="1.0" encoding="UTF-8" ?> - <users> - <user id="U001"> <name>張三</name> <age>13</age> </user> - <user id="U002"> <name>李四</name> <age>23</age> </user> - <user id="U003"> <name>王五</name> <age>15</age> </user> </users>
1:讀取全部有用的節點ui
@Test public void test1() throws Exception{ //1:聲明dbf對象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); //2:解析xml文件,返回dom對象 Document dom = db.parse("./files/users.xml"); //3:獲取user元素 NodeList nl = dom.getElementsByTagName("user"); int len = nl.getLength(); for(int i=0;i<len;i++){ Element ele = (Element) nl.item(i);//<user> String id = ele.getAttribute("id"); //如下獲取name和age的值 String name = ele.getElementsByTagName("name").item(0).getTextContent(); String age = ele.getElementsByTagName("age").item(0).getTextContent(); System.err.println(id+","+name+","+age); } } //xml中回車,空格也是元素 @Test public void test2() throws Exception{ //1:聲明dbf對象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); //2:解析xml文件,返回dom對象 Document dom = db.parse("./files/users.xml"); //3:獲取user元素 NodeList nl = dom.getElementsByTagName("user"); //獲取第一個usr元素 Element e = (Element) nl.item(0); int len = e.getChildNodes().getLength();// 獲取子元素 System.err.println("個數爲:"+len); }
2.寫文件:將內存中的內容寫入xml文件中spa
Transformercode
public abstract class Transformer extends Object 此抽象類的實例可以將源樹轉換爲結果樹。 @Test public void add() throws Exception{ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document dom = db.parse("./files/users.xml"); //在內在中生成一個元素 Element userElement = dom.createElement("user"); userElement.setAttribute("id", "U005"); Element nameElement = dom.createElement("name"); nameElement.setTextContent("趙七"); Element ageElement = dom.createElement("age"); ageElement.setTextContent("88"); userElement.appendChild(nameElement); userElement.appendChild(ageElement); dom.getFirstChild().appendChild(userElement); //生成一個寫文件的對象 TransformerFactory tsf = TransformerFactory.newInstance(); Transformer ts = tsf.newTransformer(); ts.transform(new DOMSource(dom),new StreamResult(new File("./files/users.xml"))); }
3.更改orm
@Test public void update() throws Exception{ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document dom = db.parse("./files/users.xml"); NodeList nl = dom.getElementsByTagName("user"); Element last = (Element) nl.item(nl.getLength()-1); last.getElementsByTagName("name").item(0).setTextContent("王五"); last.getElementsByTagName("age").item(0).setTextContent("15"); //生成一個寫文件的對象 TransformerFactory tsf = TransformerFactory.newInstance(); Transformer ts = tsf.newTransformer(); ts.transform(new DOMSource(dom),new StreamResult(new File("./files/users.xml"))); }
4.刪除xml
@Test public void delete() throws Exception{ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document dom = db.parse("./files/users.xml"); NodeList nl = dom.getElementsByTagName("user"); Element last = (Element) nl.item(nl.getLength()-1); //刪除本身 last.getParentNode().removeChild(last); //生成一個寫文件的對象 TransformerFactory tsf = TransformerFactory.newInstance(); Transformer ts = tsf.newTransformer(); ts.transform(new DOMSource(dom),new StreamResult(new File("./files/users.xml"))); }