zoukankan      html  css  js  c++  java
  • 使用Dom操作xml

     使用dom输出一个xml文件中的内容


    1
    import java.io.File; 2 import java.io.IOException; 3 4 import javax.xml.parsers.DocumentBuilder; 5 import javax.xml.parsers.DocumentBuilderFactory; 6 import javax.xml.parsers.ParserConfigurationException; 7 8 import org.w3c.dom.Document; 9 import org.w3c.dom.NodeList; 10 import org.xml.sax.SAXException; 11 12 public class dom{ 13 public static void main(String args[]){ 14 15 16 //取得DocumentBuilderFactory类的对象 17 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 18 //取得DocumentBuilder类的对象 19 try { 20 DocumentBuilder builder = factory.newDocumentBuilder(); 21 22 Document doc =builder.parse(new File("src//dom.xml")); 23 NodeList list = doc.getElementsByTagName("name"); 24 //输出节点 25 System.out.println("姓名 : " + list.item(0).getFirstChild().getNodeValue()); 26 27 } catch (ParserConfigurationException e) { 28 e.printStackTrace(); 29 } catch (SAXException e) { 30 e.printStackTrace(); 31 } catch (IOException e) { 32 e.printStackTrace(); 33 } 34 35 36 37 38 39 } 40 }

    此为上述使用的xml

    1 <?xml version="1.0" encoding="GBK"?>
    2 <addresslist>
    3     <name>张浩威</name>
    4 </addresslist>
    1 输出结果
    2 
    3 
    4 
    5 
    6 姓名 : 张浩威

    较为复杂的xml文件可以用循环访问

     1 import java.io.File;
     2 import java.io.IOException;
     3 
     4 
     5 import javax.xml.parsers.DocumentBuilder;
     6 import javax.xml.parsers.DocumentBuilderFactory;
     7 import javax.xml.parsers.ParserConfigurationException;
     8 
     9 import org.w3c.dom.Document;
    10 import org.w3c.dom.Element;
    11 import org.w3c.dom.NodeList;
    12 import org.xml.sax.SAXException;
    13 
    14 public class dom2{
    15     public static void main(String args[]){
    16         
    17         
    18         //取得DocumentBuilderFactory类的对象
    19         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    20         //取得DocumentBuilder类的对象
    21         try {
    22             DocumentBuilder builder = factory.newDocumentBuilder();
    23             
    24             Document doc =builder.parse(new File("src//dom1.xml"));
    25             
    26             //得到所有linkman的节点
    27             NodeList list = doc.getElementsByTagName("listman");
    28             //输出节点
    29             for(int i = 0 ; i < list.getLength() ; i++ ){
    30             
    31                 Element e = (Element)list.item(i);
    32                 System.out.println("姓名 : " + e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
    33                 System.out.println("邮箱 : " + e.getElementsByTagName("email").item(0).getFirstChild().getNodeValue());
    34             }
    35         } catch (ParserConfigurationException e) {
    36             e.printStackTrace();
    37         } catch (SAXException e) {
    38             e.printStackTrace();
    39         } catch (IOException e) {
    40             e.printStackTrace();
    41         }
    42         
    43         
    44         
    45         
    46         
    47     }
    48 }
     1 <?xml version="1.0" encoding="GBK"?>
     2 <addresslist>
     3     <listman>
     4     <name>张浩威</name>
     5     <email>287877150@qq.com</email>
     6     </listman>
     7     <listman>
     8     <name>张浩龙</name>
     9     <email>94397959@qq.com</email>
    10     </listman>
    11 </addresslist>
    1 输出结果:
    2 
    3 
    4 
    5 姓名 : 张浩威
    6 邮箱 : 287877150@qq.com
    7 姓名 : 张浩龙
    8 邮箱 : 94397959@qq.com

    也可以用dom来生成xml文件

     1 import java.io.File;
     2 import java.io.IOException;
     3 
     4 
     5 import javax.xml.parsers.DocumentBuilder;
     6 import javax.xml.parsers.DocumentBuilderFactory;
     7 import javax.xml.parsers.ParserConfigurationException;
     8 import javax.xml.transform.OutputKeys;
     9 import javax.xml.transform.Transformer;
    10 import javax.xml.transform.TransformerConfigurationException;
    11 import javax.xml.transform.TransformerException;
    12 import javax.xml.transform.TransformerFactory;
    13 import javax.xml.transform.dom.DOMSource;
    14 import javax.xml.transform.stream.StreamResult;
    15 
    16 import org.w3c.dom.Document;
    17 import org.w3c.dom.Element;
    18 import org.w3c.dom.NodeList;
    19 import org.xml.sax.SAXException;
    20 
    21 
    22 //Dom操作除了可以进行解析之外还可以进行文件的生成
    23 public class dom3{
    24     public static void main(String args[]){
    25         
    26         
    27         //取得DocumentBuilderFactory类的对象
    28         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    29         //取得DocumentBuilder类的对象
    30         try {
    31             DocumentBuilder builder = factory.newDocumentBuilder();
    32             
    33             //创建一个新的xml文档
    34             Document doc =builder.newDocument();
    35             Element addresslist = doc.createElement("addresslist");
    36             Element listman = doc.createElement("listman");
    37             Element name = doc.createElement("name");
    38             Element email = doc.createElement("email");
    39             
    40             //设置节点内容
    41             name.appendChild(doc.createTextNode("张浩威"));
    42             email.appendChild(doc.createTextNode("287877150@qq.com"));
    43             //设置各节点的关系
    44             //将节点name 和 email设置为listman的子节点
    45             listman.appendChild(name);
    46             listman.appendChild(email);
    47             //将listman设置为addresslist的子节点
    48             addresslist.appendChild(listman);
    49             //设置根节点
    50             doc.appendChild(addresslist);
    51 
    52             //得到所有linkman的节点
    53             NodeList list = doc.getElementsByTagName("listman");
    54             //这段代码的关键是将文档内容保存在文件中
    55             TransformerFactory tf = TransformerFactory.newInstance();
    56             Transformer transformer = tf.newTransformer();
    57             //设置输出编码
    58             transformer.setOutputProperty(OutputKeys.ENCODING, "GBK");
    59             //准备输出文档
    60             DOMSource source = new DOMSource(doc);
    61             StreamResult result = new StreamResult(new File("dom2.xml"));
    62             transformer.transform(source, result);
    63             
    64             
    65         } catch (ParserConfigurationException e) {
    66             e.printStackTrace();
    67         } catch (TransformerConfigurationException e) {
    68             e.printStackTrace();
    69         } catch (TransformerException e) {
    70             e.printStackTrace();
    71         } 
    72         
    73         
    74         //此时可以完成文档的输出操作,但是输出后的xml文档格式非常不好
    75         //对于dom操作既可以读取也可以输出和修改,更多的操作在于读取
    76         
    77         
    78     }
    79 }
    1 输出结果
    2 格式很难看,但是符合标准
    3 <?xml version="1.0" encoding="GBK" standalone="no"?><addresslist><listman><name>张浩威</name><email>287877150@qq.com</email></listman></addresslist>
  • 相关阅读:
    模板——二分法
    Trie Tree(静态数组写法,好写)
    欧拉路径 基础题 hiho第49周
    Fleury算法求欧拉路径 hiho第50周
    hdu 5266 pog loves szh III 在线lca+线段树区间优化
    hdu 5269 字典树
    hdu 5265 pog loves szh II
    poj 3678 2-sat(强连通)
    lca 在线,离线 poj 1330
    lca 在线算法 zoj 3195
  • 原文地址:https://www.cnblogs.com/elleniou/p/2676735.html
Copyright © 2011-2022 走看看