对XML进行DOM解析的增删改
book.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<bookshelf> <book> <bookname name="attribute1">C#</bookname> <auter>zhang3</auter> <price>27.0</price> <price>555.0</price> </book> <book> <bookname name="attribute2">C++</bookname> <auter>pj1</auter> <price>25.0</price> </book> </bookshelf>
对XML的增删改进行DOM解析
package cn.xml; import java.io.FileOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.junit.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; public class ChangeXML { public static String conf="src/book.xml"; //创建工厂 public Document createDocument() throws Exception{ DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder=factory.newDocumentBuilder(); Document document = builder.parse(conf); return document; } //添加元素 @Test public void addElement() throws Exception{ Document document = this.createDocument(); Element book=(Element) document.getElementsByTagName("book").item(0); //创建节点 Element price=document.createElement("price"); price.setTextContent("555.0"); //向book中添加新建的节点 book.appendChild(price); //得到要添加新节点的元素位置 Element auter=(Element) document.getElementsByTagName("auter").item(0); //往元素auter的前面插入新建的节点price book.insertBefore(price, auter); //写入节点 TransformerFactory tffactory = TransformerFactory.newInstance(); Transformer tf = (Transformer) tffactory.newTransformer(); tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream(conf))); } //删除节点 @Test public void deleteElement() throws Exception{ Document document = this.createDocument(); //获取要删除的父节点 Element Parent=(Element) document.getElementsByTagName("book").item(0); //Parent.getParentNode(); //获取要删除的节点 Element node = (Element) document.getElementsByTagName("bookname").item(0); //删除节点 Parent.removeChild(node); //写入节点 TransformerFactory tffactory = TransformerFactory.newInstance(); Transformer tf = (Transformer) tffactory.newTransformer(); tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream(conf))); } //更新节点 @Test public void updateElement() throws Exception{ Document document = this.createDocument(); //获取要更新的节点 Element element=(Element) document.getElementsByTagName("bookname").item(0); //更新节点 element.setTextContent("C#"); //添加内容 element.setAttribute("id", "bookname"); //添加属性等 //写入节点 TransformerFactory tffactory = TransformerFactory.newInstance(); Transformer tf = (Transformer) tffactory.newTransformer(); tf.transform(new DOMSource(document),new StreamResult(new FileOutputStream(conf))); } }
浙公网安备 33010602011771号