zoukankan      html  css  js  c++  java
  • 通过Dom4j读写XML文档

    [原]通过Dom4j读写XML文档


    package com.yy.xml.dom4j;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.util.Iterator;
    import java.util.List;

    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;

    public class User {
    private String xmlDocName = "users.xml";

    public User() {
    super();
    // TODO Auto-generated constructor stub
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    User user = new User();
    //user.newXML();
    user.readXML();
    }

    public void newXML(){
    /**
     *  users.xml
     */
    Document doc = DocumentHelper.createDocument(); //users.xml


    /**
     * 根元素 users
     */
    Element users = doc.addElement("users"; //根元素 users
    doc.setRootElement(users);
    users.addComment("the xml document about some login system information of users";


    /**
     * 根元素 users 下的子元素 user
     */
    Element user = users.addElement("user"; // 新增 users 的一个子元素 user
    user.addAttribute("id","1"; //增加user的一个属性,并设置此属性值
    Element username = user.addElement("username"; // 新增 user 元素的子元素 username
    username.setText("yy"; //设置 username 的值
    Element password = user.addElement("password"; // 新增 user 元素的子元素 password
    password.setText("12345678"; //设置 password 的值

    Element user2 = user.createCopy(); //通过对已有元素的拷贝,产生同一元素的不同实体
    user2.attribute("id".setValue("2";
    user2.element("username".setText("liyun";
    user2.element("password".setText("87654321";
    users.add(user2);  //根元素增加已有的子元素


    /**
     * 通过 org.dom4j.io.OutputFormat 来设置XML文档输出格式
     */
    OutputFormat format = OutputFormat.createPrettyPrint(); //设置XML文档输出格式
    format.setEncoding("GB2312"; //设置XML文档的编码类型
    format.setSuppressDeclaration(true);
    format.setIndent(true); //设置是否缩进
    format.setIndent("   "; //以空格方式实现缩进
    format.setNewlines(true); //设置是否换行


    /**
     *  通过 org.dom4j.io.XMLWriter 创建XML文档(写)
     */
    try {
    XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(new File(xmlDocName)),format);
    xmlWriter.write(users);
    xmlWriter.close();
    } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }


    public void readXML(){
    SAXReader saxReader =  new SAXReader();
    try {
    /**
     *  先通过 org.dom4j.io.SAXReader 读入整份XML文档
     */
    Document usersXMLDoc = saxReader.read(new FileInputStream(new File(xmlDocName)));


    /**
     *  取得XML文档的各元素及其值
     */
    Element users = usersXMLDoc.getRootElement(); //取得XML文档的根元素
    Iterator users_subElements = users.elementIterator(); //以Iterator集合得到根元素下的所有子元素
    //Iterator users_subElements = users.elementIterator("user"; //可以指定所要得到的子元素的名称
    while(users_subElements.hasNext()){
      Element user = (Element)users_subElements.next();
      List user_subElements = user.elements(); //以List集合得到 user 下的所有子元素
      //List user_subElements = user.elements("username"; //可以指定名称取得所要取的元素
      for(int i=0;i<user_subElements.size();i++){
      Element ele = (Element)user_subElements.get(i);
      System.out.print(ele.getName()+" : "+ele.getText()+"   ";
      }
      System.out.println();
    }
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (DocumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }

    }
  • 相关阅读:
    java web图片显示到浏览器
    Spring MVC + jpa框架搭建,及全面分析
    spring常用jar包总结(转载)
    搭建基于Maven的SSM框架
    线程同步的几种方法
    HttpServlet容器响应Web客户流程
    forword 与 redirect
    Hibernate状态转换
    String StringBuffer StringBuilder 对比
    位运算符
  • 原文地址:https://www.cnblogs.com/kentyshang/p/621398.html
Copyright © 2011-2022 走看看