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"))); }