zoukankan      html  css  js  c++  java
  • Java读写XML代码示例

    采用技术:dom4j

    需要jar包:dom4j-1.6.1.jar

    主类如下----

    public class dom4jTestXML {
     /**
      *
      * 方法描述:读取XML文件示例 备 注: </br>
      * 创 建 人: bo.gaobo</br>
      * 修改日期: @2013-8-20</br>
      */
     public static void readXML() {
      SAXReader sr = new SAXReader();// 获取读取xml的对象。
      try {
       Document doc = sr.read("src/Noname1.xml");// 得到xml所在位置。然后开始读取。并将数据放入doc中
       Element el_root = doc.getRootElement();// 向外取数据,获取xml的根节点。
       System.out.println("根节点:" + el_root.getName());
       Iterator it = el_root.elementIterator();// 从根节点下依次遍历,获取根节点下所有子节点
       while (it.hasNext()) {// 遍历子节点
        Object o = it.next();
        Element el_row = (Element) o;
        String str = el_row.getText();
        Iterator it_row = el_row.elementIterator();
        while (it_row.hasNext()) {
         Element el_ename = (Element) it_row.next();
         System.out.println(el_ename.getName() + "="
           + el_ename.getData());
        }
       }
      } catch (DocumentException e) {
       e.printStackTrace();
      }
     }

    /**
      *
      * 方法描述:写入XML文件并存储 备 注: </br>
      * 创 建 人: bo.gaobo</br>
      * 修改日期: @2013-8-20</br>
      */

     public static void writeToXML() {
      Row row1 = new Row();
      row1.setCo("co_1");
      row1.setComm("comm_1");
      row1.setDepno("depno_1");
      row1.setEmpno("empno_1");
      row1.setEname("ename_1");
      row1.setMgr("mgr_1");
      row1.setHiredate("2012-03-29");
      row1.setJob("job_1");
      row1.setSal("sal_1");

      Document document = DocumentHelper.createDocument();
      Element root = document.addElement("ROWDATA");
      Element row = root.addElement("ROW");
      row.addElement("CO").addText(row1.getCo());
      row.addElement("EMPNO").addText(row1.getEmpno());
      row.addElement("ENAME").addText(row1.getEname());
      row.addElement("JOB").addText(row1.getJob());
      row.addElement("MGR").addText(row1.getMgr());
      row.addElement("HIREDATE").addText(row1.getHiredate());
      row.addElement("SAL").addText(row1.getSal());
      row.addElement("COMM").addText(row1.getComm());
      row.addElement("DEPTNO").addText(row1.getDepno());

      String filePath = "D:/xmlTest/" + getNowDay() + "/";
      String fileName = "row1.xml";
      
      String xmlStr = "";
      xmlStr = document.asXML();
      try {
       Document dcmt = DocumentHelper.parseText(xmlStr);
       saveDocumentToFile(dcmt, filePath, fileName, true, "UTF-8");
      } catch (DocumentException e) {
       e.printStackTrace();
      }
      
      

     }

     public static String getNowDay() {
      SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
      return format.format(new Date());
     }

     /**
      * 方法描述:<b>存储完整XML文件.</b></br>
      * 备 注: </br>
      * 创 建 人: zyl</br>
      * 创建日期:2013-3-18</br>
      *
      * @param document
      * @param xmlFilePath
      * @param xmlFileName
      * @param isTrimText
      * @param xmlEncoding
      */
     public static void saveDocumentToFile(Document document,
       String xmlFilePath, String xmlFileName, boolean isTrimText,
       String xmlEncoding) {
      if (document == null || xmlFilePath == null || "".equals(xmlFileName)) {
       return;
      }

      File file = new File(xmlFilePath);
      // 判断路径是否存在,不存在创建
      if (!file.exists()) {
       file.mkdirs();
      }
      // 保存文件
      OutputFormat format = null;

      if (isTrimText) {
       format = OutputFormat.createPrettyPrint();
      } else {
       format = DomXmlOutputFormat.createPrettyPrint();// 保留xml属性值中的回车换行
      }

      if (xmlEncoding != null) {
       format.setEncoding(xmlEncoding);// GBK
      } else {
       format.setEncoding("UTF-8");// UTF-8
      }

      try {
       org.dom4j.io.XMLWriter xmlWriter = new org.dom4j.io.XMLWriter(
         new FileOutputStream(xmlFilePath + xmlFileName), format);// FileOutputStream可以使UTF-8生效
       xmlWriter.write(document);
       xmlWriter.close();
      } catch (IOException e) {
       System.out.println("保存XML异常:" + e.getMessage());
       System.out.println("正在保存的文件名是:" + xmlFileName);
      }
      // 存到文件中结束
     }

     public static void main(String args[]) {
    //  readXML();
      writeToXML();
     }

    }

    class Row {

     private String co;
     private String empno;
     private String ename;
     private String job;
     private String mgr;
     private String hiredate;
     private String sal;
     private String comm;
     private String depno;

     public String getCo() {
      return co;
     }

     public void setCo(String co) {
      this.co = co;
     }

     public String getEmpno() {
      return empno;
     }

     public void setEmpno(String empno) {
      this.empno = empno;
     }

     public String getEname() {
      return ename;
     }

     public void setEname(String ename) {
      this.ename = ename;
     }

     public String getJob() {
      return job;
     }

     public void setJob(String job) {
      this.job = job;
     }

     public String getHiredate() {
      return hiredate;
     }

     public void setHiredate(String hiredate) {
      this.hiredate = hiredate;
     }

     public String getSal() {
      return sal;
     }

     public void setSal(String sal) {
      this.sal = sal;
     }

     public String getComm() {
      return comm;
     }

     public void setComm(String comm) {
      this.comm = comm;
     }

     public String getDepno() {
      return depno;
     }

     public void setDepno(String depno) {
      this.depno = depno;
     }

     public String getMgr() {
      return mgr;
     }

     public void setMgr(String mgr) {
      this.mgr = mgr;
     }
    }

    主类结束----

    辅助类,重写了createPrettyPrint()方法----


    import org.dom4j.io.OutputFormat;
    /**
     * 类 描 述:<b>dom4j输出格式化.</b></br>
     * 备      注:  </br>
     * 创  建   人: yanlei.zhao</br>
     * 创建日期: 2011-12-1</br>
     */
    public class DomXmlOutputFormat extends OutputFormat { 
     /**
      * 方法描述:<b>dom4j输出格式化..</b></br>
      * 备          注: 保存Document到xml文件时,xml属性中的回车换行需要保留,
      *    可是发现在使用过程中发现dom4j自动把回车换行去掉了。特写此类</br>
      * 创  建   人: yanlei.zhao</br>
      * 创建日期: 2011-12-1</br>
      * @return
      */
        public static OutputFormat createPrettyPrint() {  
            OutputFormat format = new OutputFormat();  
            format.setIndentSize(2);  
            format.setNewlines(true);  
            format.setTrimText(false); // 覆盖 父类的  format.setTrimText(true); 
            format.setPadText(true);  

            return format;  
        }  

    辅助类结束----

    示例XML文件----

    <?xml version="1.0" ?>
    <ROWDATA>
    <ROW>
      <C0>1</C0>
      <EMPNO>7891</EMPNO>
      <ENAME>sdffff</ENAME>
      <JOB>job</JOB>
      <MGR>mgr</MGR>
      <HIREDATE>2010-1-1</HIREDATE>
      <SAL>5000.00</SAL>
      <COMM>1000.00</COMM>
      <DEPTNO>deptno</DEPTNO>
    </ROW>
    <ROW>
      <C0>2</C0>
      <EMPNO>7369</EMPNO>
      <ENAME>SMITH</ENAME>
      <JOB>CLERK</JOB>
      <MGR>7902</MGR>
      <HIREDATE>1980-12-17</HIREDATE>
      <SAL>800.00</SAL>
      <COMM>comm</COMM>
      <DEPTNO>20</DEPTNO>
    </ROW>
    </ROWDATA>

    示例文件结束----

  • 相关阅读:
    android 监听ListView中的 item 和button
    android 获取当前系统及应用信息(二)
    MotionEvent中getX()和getRawX()的区别
    HITS 算法(Hypertext Induced Topic Selection)
    放之四海皆适用的设计原则(二)
    源自神话的写作要义之英雄之旅
    这就是搜索引擎:核心技术详解
    源自神话的写作要义之英雄
    使用Spinner和setDropDownViewResource
    友好界面menu
  • 原文地址:https://www.cnblogs.com/loveLearning/p/3274724.html
Copyright © 2011-2022 走看看