JAXP解析XML

来源:互联网 发布:怎么下载淘宝app 编辑:程序博客网 时间:2024/06/05 11:04

1. Book.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?><!-- <!DOCTYPE books SYSTEM "book.dtd">
<books><book><bookname>Java Web</bookname><auther>jerry2</auther><price>23</price><price>11123</price>  </book>  <book><bookname>Java Web</bookname><auther>jerry2</auther><price>23</price><price>11123</price>  </book></books>

2.XMLParesDemo.Java

package xml;import java.io.File;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.Before;import org.junit.Test;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;public class XMLParseDemo {Document document= null; File file = null; @Before public void before() throws Exception{  //创建工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //2. 得到DOM解析器 DocumentBuilder builder = factory.newDocumentBuilder(); file = new File("src\\book.xml");//3.解析xml文档  document =  builder.parse(file ); } @Test public void read()throws Exception{  NodeList list = document.getElementsByTagName("books");  Node node = list.item(0);  String content = node.getTextContent(); System.out.println(content); }  @Test public void read2()throws Exception{  //得到根节点 Node root = document.getElementsByTagName("books").item(0); list(root);  }@Testpublic void add() throws Exception{//创建节点Element price = document.createElement("price");price.setTextContent("23");//把创建的节点挂到第一本书上//得到要挂在的节点Element book = (Element) document.getElementsByTagName("book").item(1);//得到参考节点Element rfNode = (Element) book.getElementsByTagName("price").item(0); book.insertBefore(price, rfNode);//把更新后的内容写到XML文档TransformerFactory tffactory =TransformerFactory.newInstance();Transformer ft = tffactory.newTransformer();ft.transform(new DOMSource(document), new StreamResult(new FileOutputStream(file)));}@Testpublic void delete() throws Exception{//创建节点Element price = document.createElement("price");price.setTextContent("23");//得到要删除的节点Element book = (Element) document.getElementsByTagName("book").item(1);//得到删除节点的父节点Element parent = (Element) book.getParentNode();parent.removeChild(book); //把更新后的内容写到XML文档TransformerFactory tffactory =TransformerFactory.newInstance();Transformer ft = tffactory.newTransformer();ft.transform(new DOMSource(document), new StreamResult(new FileOutputStream(file)));}@Testpublic void update() throws Exception{//创建节点Element price = document.createElement("price");price.setTextContent("23re");//得到要删除的节点Element price1 = (Element) document.getElementsByTagName("price").item(1);//得到删除节点的父节点Element book = (Element) price1.getParentNode();price1.replaceChild(price, price1); //把更新后的内容写到XML文档TransformerFactory tffactory =TransformerFactory.newInstance();Transformer ft = tffactory.newTransformer();ft.transform(new DOMSource(document), new StreamResult(new FileOutputStream(file)));}private void list(Node node) {// TODO Auto-generated method stubif(node instanceof Element){System.out.println(node.getNodeName());}NodeList lists = node.getChildNodes();for (int i=0;i<lists.getLength();i++) {Node child = lists.item(i);list(child);}} }








0 0
原创粉丝点击