当前位置:编程学习 > XML/UML >>

使用JAXP对xml文档进行Dom解析

[java] 
package cn.xue.xml;  
  
import java.io.FileOutputStream;  
import java.io.IOException;  
  
import javax.xml.parsers.DocumentBuilder;  
import javax.xml.parsers.DocumentBuilderFactory;  
import javax.xml.parsers.ParserConfigurationException;  
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;  
import org.w3c.dom.Node;  
import org.w3c.dom.NodeList;  
import org.xml.sax.SAXException;  
  
  
//使用dom方式对xml文档进行crud  
public class Test2 {  
      
    //读取xml文档中:<书名>JavaScript网页开发</书名> 节点中的值  
    @Test  
    public void read1() throws Exception{  
          
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
        DocumentBuilder builder = factory.newDocumentBuilder();  
        Document document = builder.parse("src/book.xml");  
          
        NodeList list = document.getElementsByTagName("书名");  
        Node node = list.item(1);  
        String content = node.getTextContent();  
        System.out.println(content);  
    }  
      
    //得到xml文档中所有的标签  
    @Test  
    public void read2() throws Exception{  
          
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
        DocumentBuilder builder = factory.newDocumentBuilder();  
        Document document = builder.parse("src/book.xml");  
          
        //得到根节点  
        Node root = document.getElementsByTagName("书架").item(0);  
          
        list(root);  
    }  
  
    private void list(Node node) {  
        if(node instanceof Element){  
            System.out.println(node.getNodeName());  
        }  
        NodeList list = node.getChildNodes();  
        for(int i = 0; i < list.getLength(); i++)  
        {  
            Node child = list.item(i);  
            list(child);  
        }     
    }  
      
    //得到xml文档中标签属性的值:<书名 name = "xxxx">Java就业培训教程</书名>  
    @Test  
    public void read3() throws Exception{  
          
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
        DocumentBuilder builder = factory.newDocumentBuilder();  
        Document document = builder.parse("src/book.xml");  
          
        Element bookname = (Element) document.getElementsByTagName("书名").item(0);  
        String value = bookname.getAttribute("name");  
        System.out.println(value);  
          
    }  
      
    //向xml文档中添加节点:<售价>59.00元</售价>  
    @Test  
    public void add1() throws Exception{  
          
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
        DocumentBuilder builder = factory.newDocumentBuilder();  
        Document document = builder.parse("src/book.xml");  
          
        //创建节点  
        Element price = document.createElement("售价");  
        price.setTextContent("59.00元");  
          
        //把节点挂在第一本书上  
        Element book = (Element) document.getElementsByTagName("书").item(0);  
        book.appendChild(price);  
          
        //把更新后的内存写回到xml文档  
        TransformerFactory tffactory = TransformerFactory.newInstance();  
        Transformer tf = tffactory.newTransformer();  
        tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/book.xml")));  
    }  
      
    //向xml文档中指定位置插入节点:<售价>59.00元</售价>  
    @Test  
    public void add2() throws Exception{  
          
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
        DocumentBuilder builder = factory.newDocumentBuilder();  
        Document document = builder.parse("src/book.xml");  
          
        //创建节点  
        Element price = document.createElement("售价");  
        price.setTextContent("59.00元");  
          
        //得到参考节点  
        Element refNode = (Element) document.getElementsByTagName("售价").item(0);  
          
        //得到挂崽的节点  
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,