XMl操作

整理了一下xml的增删改查操作,代码如下,可直接贴入eclipse导入dom4j 的jar包使用。

package com.jeecg.kedong;

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

import org.apache.commons.collections.map.HashedMap;
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;

import net.sf.json.JSONArray; 
/**
 * 
 * @author hongliang.dinghl Dom4j 生成XML文档与解析XML文档
 */
public class Dom4jDemo {
    public static void main(String[] args) {
        /*createPropertiesXml("D:\\\\properties.xml");
        addElement("D:\\\\properties.xml");
        updateElement("D:\\\\properties.xml");
        */
        JSONArray json = JSONArray.fromObject(parserXml("D:\\\\properties.xml")); 
        System.out.println(json);
    }
    //创建xml
    public static void createPropertiesXml(String fileName) {
        Document document = DocumentHelper.createDocument();
        Element properties = document.addElement("properties");
        Element title = properties.addElement("property");

        Element subtext = title.addElement("id");
        subtext.setText("bachground");
        Element text = title.addElement("title");
        text.setText("背景色:");
        Element value = title.addElement("value");
        value.setText("black");

        Element title1 = properties.addElement("property");

        Element subtext1 = title1.addElement("id");
        subtext1.setText("width");
        Element text1 = title1.addElement("title");
        text1.setText("长:");

        Element value1 = title1.addElement("value1");
        value1.setText("345");

         // 设置XML文档格式
        OutputFormat outputFormat = OutputFormat.createPrettyPrint();  
        // 设置XML编码方式,即是用指定的编码方式保存XML文档到字符串(String),这里也可以指定为GBK或是ISO8859-1  
        outputFormat.setEncoding("UTF-8");
        //outputFormat.setSuppressDeclaration(true); //是否生产xml头
        outputFormat.setIndent(true); //设置是否缩进
        outputFormat.setIndent("    "); //以四个空格方式实现缩进
        outputFormat.setNewlines(true); //设置是否换行

        try {  
            // stringWriter字符串是用来保存XML文档的  
           // StringWriter stringWriter = new StringWriter();  
            Writer fileWriter = new FileWriter(fileName);
            // xmlWriter是用来把XML文档写入字符串的(工具)  
            XMLWriter xmlWriter = new XMLWriter(fileWriter, outputFormat);  
            // 把创建好的XML文档写入字符串  
            xmlWriter.write(document);
            xmlWriter.close();              
        } catch (IOException e) {  
            e.printStackTrace();  
        }            
    }  

    //创建xml
    public static void createXml(String fileName) {
        Document document = DocumentHelper.createDocument();
        Element properties = document.addElement("properties");
        Element title = properties.addElement("title");
        Element text = title.addElement("text");
        text.setText("标题");
        Element subtext = title.addElement("subtext");
        subtext.setText("子标题");

        Element tooltip = properties.addElement("tooltip");
        Element trigger = tooltip.addElement("trigger");
        trigger.setText("axis");

        try {
            Writer fileWriter = new FileWriter(fileName);
            XMLWriter xmlWriter = new XMLWriter(fileWriter);
            xmlWriter.write(document);
            xmlWriter.close();
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }

    //读取xml
    public static List<ConfigProperty> parserXml(String fileName) {
        List<ConfigProperty> properties = new ArrayList<ConfigProperty>();
        File inputXml = new File(fileName);
        SAXReader saxReader = new SAXReader();
        try {
            Document document = saxReader.read(inputXml);
            Element employees = document.getRootElement();
            for (Iterator i = employees.elementIterator(); i.hasNext();) {
                Element employee = (Element) i.next();
                System.out.println(employee.getName()+"--------------");
                ConfigProperty property = new ConfigProperty();
                for (Iterator j = employee.elementIterator(); j.hasNext();) {
                    Element node = (Element) j.next();
                    if("id".equals(node.getName())) {
                        property.setId(node.getText());
                    }else if("title".equals(node.getName())) {
                        property.setTitle(node.getText());
                    }else {
                        property.setValue(node.getText());
                    }
                    System.out.println(node.getName() + ":" + node.getText());
                }
                properties.add(property);
            }
        } catch (DocumentException e) {
            System.out.println(e.getMessage());
        }
        return properties;
    }

    //添加元素
    public static void addElement(String path){
           SAXReader reader = new SAXReader();
           Document doc = null;
           try {
            doc = reader.read(new File(path));//将现有的xml文件读进内存
           } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
           }

        //开始修改xml文件(在内存中修改)
           if(doc != null){
            Element elm = doc.getRootElement();
            Element elm2 = elm.addElement("property");
            elm2.addElement("id").addText("Jennet");
            elm2.addElement("title").addText("female");
            elm2.addElement("value").addText("female");
           //将修改后的xml文件写到磁盘上
            // 设置XML文档格式
            OutputFormat outputFormat = OutputFormat.createPrettyPrint();  
            // 设置XML编码方式,即是用指定的编码方式保存XML文档到字符串(String),这里也可以指定为GBK或是ISO8859-1  
            outputFormat.setEncoding("UTF-8");
            //outputFormat.setSuppressDeclaration(true); //是否生产xml头
            outputFormat.setIndent(true); //设置是否缩进
            outputFormat.setIndent("    "); //以四个空格方式实现缩进
            outputFormat.setNewlines(true); //设置是否换行

            try {  
                // stringWriter字符串是用来保存XML文档的  
               // StringWriter stringWriter = new StringWriter();  
                Writer fileWriter = new FileWriter(path);
                // xmlWriter是用来把XML文档写入字符串的(工具)  
                XMLWriter xmlWriter = new XMLWriter(fileWriter, outputFormat);  
                // 把创建好的XML文档写入字符串  
                xmlWriter.write(doc);
                xmlWriter.close();              
            } catch (IOException e) {  
                e.printStackTrace();  
            }            
           }
        }


        //修改
        public static void updateElement(String path){
               SAXReader reader = new SAXReader();
               Document doc = null;
               try {
                doc = reader.read(new File(path));//将现有的xml文件读进内存
               } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
               }

            //开始修改xml文件(在内存中修改)

               if(doc != null){
                   List list = doc.selectNodes("//property/id" );
                   Iterator iter=list.iterator();
                   while(iter.hasNext()){
                      Element lastNameElement=(Element)iter.next();
                      if(lastNameElement.getText().equals("black")) {
                      lastNameElement.setText("background");
                      }
                   }
               //将修改后的xml文件写到磁盘上
                // 设置XML文档格式
                OutputFormat outputFormat = OutputFormat.createPrettyPrint();  
                // 设置XML编码方式,即是用指定的编码方式保存XML文档到字符串(String),这里也可以指定为GBK或是ISO8859-1  
                outputFormat.setEncoding("UTF-8");
                //outputFormat.setSuppressDeclaration(true); //是否生产xml头
                outputFormat.setIndent(true); //设置是否缩进
                outputFormat.setIndent("    "); //以四个空格方式实现缩进
                outputFormat.setNewlines(true); //设置是否换行

                try {  
                    // stringWriter字符串是用来保存XML文档的  
                   // StringWriter stringWriter = new StringWriter();  
                    Writer fileWriter = new FileWriter(path);
                    // xmlWriter是用来把XML文档写入字符串的(工具)  
                    XMLWriter xmlWriter = new XMLWriter(fileWriter, outputFormat);  
                    // 把创建好的XML文档写入字符串  
                    xmlWriter.write(doc);
                    xmlWriter.close();              
                } catch (IOException e) {  
                    e.printStackTrace();  
                }            
               }
            }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值