dom4j 创建XML文件

package com.hengtian.util;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.dom4j.Attribute;
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 XmlManager {

    public static void main(String[] args) {
        XmlManager xmlManager = new XmlManager();
        // 初始化xml文档
        Document doc = null;
        // 通过dom4j方法创建xml
        String[] arr = new String[]{"1","2","3","4","5","6","7","8","9"};
        doc = xmlManager.createXml(arr);  

        // XML字符串
        // String strXMl = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
        // + "<?xml-stylesheet type=\"text/xsl\" href=\"students.xsl\"?>"
        // + "<students><!--Students Table-->   <student stu=\"001\">"
        // + "<name>张三</name><age>18</age></student><student stu=\"002\">"
        // + "<name>李四</name><age>19</age></student></students>";
        // 通过字符串创建xml
        // doc = xmlManager.createDocumentByString(strXMl);
        // XMl输出路径
         String outputPath = "xml/Students.xml";
        // 输出xml
//         xmlManager.saveDocument(doc, outputPath);  

        // xml输入路径
//        String inputPath = "xml/Students.xml";  

        // 根据xml路径更改XML
        //xmlManager.ModifyXml(inputPath);  

        // 根据xml路径获取doc
        //doc = xmlManager.getDocument(inputPath);
        // 遍历XML
//         xmlManager.traversalDocumentByElementIterator(doc);
        // xmlManager.traversalDocumentByVisitor(doc);
        //xmlManager.traversalDocumentByElements(doc);
        //xmlManager.traversalDocumentByselectNodes(doc, "/Students/student/name");
    }

     /**
     * 获取XML文件
     * @param inputPath
     * @return
     */
    public Document getDocument(String inputPath) {
        // 输入文件
        File inputXml = new File(inputPath);
        if(!inputXml.exists()){//判断文件是否存在
            try {
                inputXml.createNewFile();  //创建文件
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        SAXReader saxReader = new SAXReader();
        Document document = null;
        try {
            document = saxReader.read(inputXml);
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        return document;
    }  

    /**
     * 通过Dom4j方法创建xml文档
     *
     * @return
     */
    public Document createXml(String[] arr) {
        Document doc = DocumentHelper.createDocument();
        // 创建ProcessingInstruction
        Map<String, String> inMap = new HashMap<String, String>();
       // inMap.put("type", "text/xsl");
       // inMap.put("href", "students.xsl");
        //doc.addProcessingInstruction("xml-stylesheet", inMap);
        // 增加根节点
        Element rssSourcesElement = doc.addElement("RSSsources");
        // 增加注释
       // studentsElement.addComment("Students Table");
        for(String str : arr){
            Element rssElement = rssSourcesElement.addElement("rssSource");
            rssElement.addAttribute("sourceId", str);
        }
//        // 增加子节点
//        Element stuElement = studentsElement.addElement("student");
//        // 增加属性
//        stuElement.addAttribute("stu", "001");
//        // 增加名称节点
//        Element nameElement = stuElement.addElement("name");
//        // 设置名称节点的值
//        nameElement.setText("张三");
//        // 增加年龄节点
//        Element ageElement = stuElement.addElement("age");
//        // 设置年龄节点的值
//        ageElement.setText("18");
//
//        // 同上
//        Element anotherStuElement = studentsElement.addElement("student");
//        anotherStuElement.addAttribute("stu", "002");
//        Element anotherNameElement = anotherStuElement.addElement("name");
//        anotherNameElement.setText("李四");
//        Element anotherAgeElement = anotherStuElement.addElement("age");
//        anotherAgeElement.setText("19");
        return doc;
    }  

    public Document createXml(List<Long> arr) {
        Document doc = DocumentHelper.createDocument();
        Map<String, String> inMap = new HashMap<String, String>();
        // 增加根节点
        Element rssSourcesElement = doc.addElement("Urls");
        for(Long str : arr){
            Element rssElement = rssSourcesElement.addElement("url");
            rssElement.addAttribute("CRC32", str.toString());
        }

        return doc;
    }
    /**
     * 通过字符串创建xml文档
     * @param xmlStr
     * @return
     */
    public Document createDocumentByString(String xmlStr) {  

        Document doc = null;
        try {
            // 通过字符串转换直接构建xml文档
            doc = DocumentHelper.parseText(xmlStr);
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        return doc;
    }  

    /**
     * 修改xml
     *
     * @param inputXmlPath
     */
    public void ModifyXml(String inputXmlPath) {
        // 获取文件
        File inputXml = new File(inputXmlPath);  

        try {
            SAXReader saxReader = new SAXReader();
            // 创建document
            Document doc = saxReader.read(inputXml);
            // 读取Students/student下所有具有属性stu的元素
            List list = doc.selectNodes("/Students/student/@stu");
            Iterator iter = list.iterator();
            while (iter.hasNext()) {
                Attribute attribute = (Attribute) iter.next();
                if (attribute.getValue().equals("001"))
                    attribute.setValue("0001");
            }  

            list = doc.selectNodes("/Students/student");
            iter = list.iterator();
            while (iter.hasNext()) {
                Element element = (Element) iter.next();
                Iterator iterator = element.elementIterator("name");
                while (iterator.hasNext()) {
                    Element nameElement = (Element) iterator.next();
                    if (nameElement.getText().equals("张三"))
                        nameElement.setText("王五");
                }
            }
            String outputPath = "xml/Students-Modified.xml";
            saveDocument(doc, outputPath);  

        }  

        catch (DocumentException e) {
            System.out.println(e.getMessage());
        }  

    }  

    /**
     * 将文档输出到文件保存,可指定格式化输出,可指定字符编码。
     *
     * @param document
     * @param outputFile
     */
    public void saveDocument(Document doc, String outputPath) {
        // 输出文件
        File outputFile = new File(outputPath);
        try {
            // 美化格式
            OutputFormat format = OutputFormat.createPrettyPrint();
            // 指定XML编码,不指定的话,默认为UTF-8
            format.setEncoding("UTF-8");
            XMLWriter output = new XMLWriter(new FileWriter(outputFile), format);
            output.write(doc);
            output.flush();
            output.close();
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }  

    /**
     * 普通方法遍历xml
     *
     * @param doc
     */
    public void traversalDocumentByElementIterator(Document doc) {
        // 获取根节点
        Element root = doc.getRootElement();
        // 枚举根节点下所有子节点
        for (Iterator ie = root.elementIterator(); ie.hasNext();) {
            System.out.println("======");
            Element element = (Element) ie.next();
            System.out.println(element.getName());  

            // 枚举属性
            for (Iterator ia = element.attributeIterator(); ia.hasNext();) {
                Attribute attribute = (Attribute) ia.next();
                System.out.println(attribute.getName() + ":"
                        + attribute.getData());
            }
            // 枚举当前节点下所有子节点
            for (Iterator ieson = element.elementIterator(); ieson.hasNext();) {
                Element elementSon = (Element) ieson.next();
                System.out.println(elementSon.getName() + ":"
                        + elementSon.getText());
            }
        }
    }  

    /**
     * 使用elements方法进行xml的读取,相当于条件查询,可以根据不同的节点,利用for循环查询该节点下所有的数据。
     *
     * @throws DocumentException
     */
    public static void traversalDocumentByElements(Document doc) {
        // 获取根节点
        Element root = doc.getRootElement();
        // 根据根节点,将根节点下 student中的所有数据放到list容器中。
        List list = root.elements("student");
        // 这种遍历方式,是jdk1.5以上的版本支持的遍历方式,嘿嘿试试
        for (Object obj : list) {
            Element el = (Element) obj;
            System.out.println("----------"+el.getName()+"-----------");
            // 获取name节点下所有的内容,存入listName容器中
            List listName = el.elements("name");
            // 获取age节点下所有的内容,存入age容器中
            List listAge = el.elements("age");
            for (int i=0;i<listName.size();i++) {
                Element elname = (Element) listName.get(i);
                // 获取name节点下的数据。
                System.out.println(elname.getName() + ": " + elname.getText());
                Element elage = (Element) listAge.get(i);
                // 获取age节点下的数据。
                System.out.println(elage.getName() + ": " + elage.getText());  

            }  

        }
    }  

    /**
     * 使用selectNodes读取xml文件
     *
     * @param args
     * @throws DocumentException
     */
    public static void traversalDocumentByselectNodes(Document doc,
            String elementpath) {
        // 使用selectNodes获取所要查询xml的节点。
        List list = doc.selectNodes(elementpath);  

        // 遍历节点,获取节点内数据。
        for (Iterator ie = list.iterator(); ie.hasNext();) {
            Element el = (Element) ie.next();
            System.out.println(el.getName() + ": " + el.getText());  

        }  

    }  

}
时间: 2024-10-02 07:58:52

dom4j 创建XML文件的相关文章

使用Dom4j创建XML文件

代码如下: 1 package xml; 2 3 import java.io.FileWriter; 4 import java.io.IOException; 5 import java.io.Writer; 6 import org.dom4j.Document; 7 import org.dom4j.DocumentHelper; 8 import org.dom4j.Element; 9 import org.dom4j.io.OutputFormat; 10 import org.d

dom4j创建xml文件

import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.XMLWriter; /** * 使用dom4j生成xml文档 * @author Administrator * */ publi

dom4j创建xml

在前边介绍SAX,PULL等等既然能解析,当然也能生成.不过这里介绍dom4j创建xml文件,简单易懂. dom4j是独立的api,官网:http://www.dom4j.org/    可以去这下载jar包,里边也有详细的例子.. 在这里就进行简单的介绍,够用就行.. 1.创建document : Document document = DocumentHelper.createDocument(); 2.添加节点 // 创建根节点并添加进文档 Element root = document.

使用DOM4J解析XMl文件与读取XML文件

XML文件 1 <?xml version="1.0" encoding="UTF-8"?> 2 <bookstore> 3 <book id="1"> 4 <name>冰与火之歌</name> 5 <author>乔治马丁</author> 6 <year>2014</year> 7 <price>89</price&g

【java项目实战】dom4j解析xml文件,连接Oracle数据库

简介 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方,我们还是看一下官方给出的解释.如下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT等语言的库.它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP等编程标准. 特点 dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用的特点,同时它也是一个开放源代码的软件.如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,例

dom4j生成xml文件

1 package xml; 2 3 import java.io.FileWriter; 4 import java.io.IOException; 5 import java.io.Writer; 6 import org.dom4j.Document; 7 import org.dom4j.DocumentHelper; 8 import org.dom4j.Element; 9 import org.dom4j.io.OutputFormat; 10 import org.dom4j.i

【DRP】采用dom4j完成XML文件导入数据库

xml文件在现在的web开发中扮演着重要的角色,从数据库连接配置到其他各种参数的设置,xml文件在反射技术的应用中举足轻重,也正因为xml文件中保存着如此重要的参数,所以对xml文件的读写操作就显得更加重要.下面我们重点讲解一下dom4j完成XML文件导入数据库. 0.带读取的xml文件如下: 1.利用PL/SQL导入SQL脚本,建立Oracle数据库表(表T_XML)结构,用于接收xml导入的数据 2.按照下图,建立目录并导入相应文件 通过引入的相关jar包,实现dom4j技术解析xml文件(

函数创建XML文件

REPORT  YTST_XML_14. *----------------------------------------------------------------------* * PANTALLA SELECCION * PARAMETERS: GK_RUTA TYPE RLGRAP-FILENAME DEFAULT 'C:\ECC6.XML'. * PANTALLA SELECCION * *---------------------------------------------

C#操作XML学习之创建XML文件的同时新建根节点和子节点(多级子节点)

最近工作中遇到一个问题,要求创建一个XML文件,在创建的时候要初始化该XML文档,同时该文档打开后是XML形式,但是后缀名不是.在网上找了好些资料没找到,只能自己试着弄了一下,没想到成功了,把它记下来作为自己的学习笔记. 需求:创建XML文件,后缀名为.xwsp 初始化的文档节点如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <xxxversion="1.0" name="