zoukankan      html  css  js  c++  java
  • 老王学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) ;
        }
    }
  • 相关阅读:
    竞赛图和哈密顿回路
    Hall 定理
    Vim 和 Gdb 学习笔记
    AT4996 [AGC034F] RNG and XOR(FWT)
    UOJ310 黎明前的巧克力(fwt)
    AT5202 [AGC038E] Gachapon(min-max)
    AT2289 [ARC067D] Yakiniku Restaurants(水题)
    拉格朗日插值
    [CSP-SJX2019]散步(模拟)
    Leetcode547 朋友圈 图的DFS与unionFind算法
  • 原文地址:https://www.cnblogs.com/wanglei-134/p/3181389.html
Copyright © 2011-2022 走看看