老王学jsp之dom解析xml

  xml是一种数据的存储方式,标签完全由用户自定义,是一种树状的结构,必须完全匹配,比如:

<?xml version="1.0" encoding="GBK" ?>
<address>
<person>
    <name>老王</name>
    <sex></sex>
    <phone>15520080563</phone>
</person>
<person>
    <name>老大</name>
    <sex></sex>
    <phone>15520080563</phone>
</person>
</address>

1.xml文档的读取(DOM方式)

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;


public class readXmlByDom {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
        DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//新建工厂对象
        DocumentBuilder builder=factory.newDocumentBuilder();//实例化builder对象
        Document doc=builder.parse(new File("D:/学习资料/JAVA/软件/work/xml/src/demo1.xml"));
        NodeList nl = doc.getElementsByTagName("person") ;
        for(int x=0;x<nl.getLength();x++){
            Element e = (Element) nl.item(x) ;    // 取出每一个元素
            System.out.println("姓名:" + e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue()) ;
            System.out.println("电话:" + e.getElementsByTagName("phone").item(0).getFirstChild().getNodeValue()) ;
        }
    
    

    }

}

输出结果:

姓名:老王
电话:15520080563
姓名:老大
电话:15520080563

2.xml文档的新建

import java.io.* ;
import org.w3c.dom.* ;
import javax.xml.parsers.* ;
import javax.xml.transform.* ;
import javax.xml.transform.dom.* ;
import javax.xml.transform.stream.* ;

public class  hh{
    public static void main(String args[]) throws Exception {
        // 取得DocumentBuilderFactory类的对象
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance() ;
        // 取得DocumentBuilder类的对象
        DocumentBuilder build = factory.newDocumentBuilder()  ;
        Document doc = build.newDocument() ;    // 创建一个新的XML文档
        Element addresslist = doc.createElement("addresslist") ;
        Element linkman = doc.createElement("linkman") ;
        Element name = doc.createElement("name") ;
        Element email = doc.createElement("email") ;
        // 设置节点内容
        name.appendChild(doc.createTextNode("老王")) ;
        email.appendChild(doc.createTextNode("wanglei134@foxmail.com")) ;
        // 该设置各个节点的关系
        linkman.appendChild(name) ;    // name是linkeman的子节点
        linkman.appendChild(email) ;    // email是linkman的子节点
        addresslist.appendChild(linkman) ;
        doc.appendChild(addresslist) ;
        TransformerFactory tf = TransformerFactory.newInstance() ;
        Transformer t = tf.newTransformer() ;
        t.setOutputProperty(OutputKeys.ENCODING, "GBK")  ;    // 处理中文的
        DOMSource source = new DOMSource(doc) ;    // 准备输出文档
        StreamResult result = new StreamResult(new File("d:"+File.separator+"output.xml")) ;
        t.transform(source,result) ;
    }
}
原文地址:https://www.cnblogs.com/wanglei-134/p/3181389.html