XML--Jaxp-dom解析

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

    javax.xml.transform
    類 Transformer

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")));
 }
相關文章
相關標籤/搜索