博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java操作XML文件 dom4j 篇【转】
阅读量:5992 次
发布时间:2019-06-20

本文共 6983 字,大约阅读时间需要 23 分钟。

加入包

1 //文件包  2 import java.io.ByteArrayOutputStream;  3 import java.io.File;  4 import java.io.FileWriter;  5 //工具包  6 import java.util.Iterator;  7 import java.util.List;  8 //dom4j包  9 import org.dom4j.Attribute; 10 import org.dom4j.Document; 11 import org.dom4j.DocumentHelper; 12 import org.dom4j.Element; 13 import org.dom4j.io.OutputFormat; 14 import org.dom4j.io.SAXReader; 15 import org.dom4j.io.XMLWriter;

1、将XML文件的内容转化为String

1   /**  2      * doc2String  3      * 将xml文档内容转为String  4      * @return 字符串  5      * @param document  6      */  7    public static String doc2String(Document document)  8     {  9       String s = ""; 10       try 11        { 12            //使用输出流来进行转化 13             ByteArrayOutputStream out = new ByteArrayOutputStream(); 14            //使用GB2312编码 15             OutputFormat format = new OutputFormat("   ", true, "GB2312"); 16             XMLWriter writer = new XMLWriter(out, format); 17             writer.write(document); 18             s = out.toString("GB2312"); 19        }catch(Exception ex) 20        {             21             ex.printStackTrace(); 22        }       23       return s; 24     }

2、将符合XML格式的String 转化为XML Document

1  /**  2      * string2Document  3      * 将字符串转为Document  4      * @return  5      * @param s xml格式的字符串  6      */  7    public static Document string2Document(String s)  8     {  9        Document doc = null; 10       try 11        { 12             doc = DocumentHelper.parseText(s); 13        }catch(Exception ex) 14        {             15             ex.printStackTrace(); 16        } 17       return doc; 18     }

3、将Document对象保存为一个xml文件到本地

1   /**  2      * doc2XmlFile  3      * 将Document对象保存为一个xml文件到本地  4      * @return true:保存成功   flase:失败  5      * @param filename 保存的文件名  6      * @param document 需要保存的document对象  7      */  8    public static boolean doc2XmlFile(Document document,String filename)  9     { 10       boolean flag = true; 11       try 12        { 13             /* 将document中的内容写入文件中 */ 14             //默认为UTF-8格式,指定为"GB2312" 15              OutputFormat format = OutputFormat.createPrettyPrint(); 16              format.setEncoding("GB2312"); 17              XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)),format); 18              writer.write(document); 19              writer.close();             20          }catch(Exception ex) 21          { 22              flag = false; 23              ex.printStackTrace(); 24          } 25         return flag;       26     }

4、将xml格式的字符串保存为本地文件,如果字符串格式不符合xml规则,则返回失败

1   /**  2      * string2XmlFile  3      * 将xml格式的字符串保存为本地文件,如果字符串格式不符合xml规则,则返回失败  4      * @return true:保存成功   flase:失败  5      * @param filename 保存的文件名  6      * @param str 需要保存的字符串  7      */  8    public static boolean string2XmlFile(String str,String filename)  9     { 10       boolean flag = true; 11       try 12        { 13           Document doc =   DocumentHelper.parseText(str);        14           flag = doc2XmlFile(doc,filename); 15        }catch (Exception ex) 16        { 17           flag = false; 18           ex.printStackTrace(); 19        } 20       return flag; 21     }

5、载入一个xml文档

1   /**  2      * load  3      * 载入一个xml文档  4      * @return 成功返回Document对象,失败返回null  5      * @param uri 文件路径  6      */  7    public static Document load(String filename)  8     {  9        Document document = null; 10       try 11        { 12            SAXReader saxReader = new SAXReader(); 13            document = saxReader.read(new File(filename)); 14        } 15       catch (Exception ex){ 16            ex.printStackTrace(); 17        }   18       return document; 19     }

6、演示String保存为xml文件

1  /**  2      * xmlWriteDemoByString  3      * 演示String保存为xml文件  4      */  5    public void xmlWriteDemoByString()  6     {  7       String s = "";  8       /** xml格式标题 "
" 可以不用写*/ 9 s = "
\r\n" 10 +"
\r\n" 11 +"
127.0.0.1
\r\n" 12 +"
21
\r\n" 13 +"
cxl
\r\n" 14 +"
longshine
\r\n" 15 +"
\r\n" 16 +"
50
\r\n" 17 +"
\r\n" 18 +"
10
\r\n" 19 +"
\r\n" 20 +"
\r\n"; 21 //将文件生成到classes文件夹所在的目录里 22 string2XmlFile(s,"xmlWriteDemoByString.xml"); 23 //将文件生成到classes文件夹里 24 string2XmlFile(s,"classes/xmlWriteDemoByString.xml"); 25 }

7、演示手动创建一个Document,并保存为XML文件

1  /**  2      * 演示手动创建一个Document,并保存为XML文件  3      */  4    public void xmlWriteDemoByDocument()  5     {  6         /** 建立document对象 */  7          Document document = DocumentHelper.createDocument();  8         /** 建立config根节点 */  9          Element configElement = document.addElement("config"); 10         /** 建立ftp节点 */ 11          configElement.addComment("东电ftp配置"); 12          Element ftpElement = configElement.addElement("ftp"); 13          ftpElement.addAttribute("name","DongDian"); 14         /** ftp 属性配置 */ 15          Element hostElement = ftpElement.addElement("ftp-host"); 16          hostElement.setText("127.0.0.1"); 17          (ftpElement.addElement("ftp-port")).setText("21"); 18          (ftpElement.addElement("ftp-user")).setText("cxl"); 19          (ftpElement.addElement("ftp-pwd")).setText("longshine"); 20          ftpElement.addComment("ftp最多尝试连接次数"); 21          (ftpElement.addElement("ftp-try")).setText("50"); 22          ftpElement.addComment("ftp尝试连接延迟时间"); 23          (ftpElement.addElement("ftp-delay")).setText("10");     24         /** 保存Document */ 25          doc2XmlFile(document,"classes/xmlWriteDemoByDocument.xml"); 26     }

8、演示读取文件的具体某个节点的值

1  /**  2      *   演示读取文件的具体某个节点的值  3      */  4    public static void xmlReadDemo()  5     {  6        Document doc = load("classes/xmlWriteDemoByDocument.xml");  7       //Element root = doc.getRootElement();  8       /** 先用xpath查找所有ftp节点 并输出它的name属性值*/  9        List list = doc.selectNodes("/config/ftp" ); 10        Iterator it = list.iterator(); 11       while(it.hasNext()) 12        {    13            Element ftpElement = (Element)it.next(); 14            System.out.println("ftp_name="+ftpElement.attribute("name").getValue()); 15        } 16       /** 直接用属性path取得name值 */ 17        list = doc.selectNodes("/config/ftp/@name" ); 18        it = list.iterator(); 19       while(it.hasNext()) 20        {    21            Attribute attribute = (Attribute)it.next(); 22            System.out.println("@name="+attribute.getValue()); 23        } 24       /** 直接取得DongDian ftp的 ftp-host 的值 */ 25        list = doc.selectNodes("/config/ftp/ftp-host" ); 26        it = list.iterator(); 27        Element hostElement=(Element)it.next(); 28        System.out.println("DongDian's ftp_host="+hostElement.getText()); 29     }

 

 

 

 

 

 

转载于:https://www.cnblogs.com/macula/archive/2012/07/31/2617195.html

你可能感兴趣的文章
ibatis增删改、批量增删改以及查询
查看>>
iOS常用动画
查看>>
php设计模式中的类型安全 指--只接受特定的对象 ---以避免发生错误
查看>>
为什么对象字面量没有名字?
查看>>
洛谷P4550 收集邮票(概率期望)
查看>>
快速开始
查看>>
项目持续集成工具
查看>>
apt-pkg
查看>>
前端 飞升之路
查看>>
[ZJOI2018]历史
查看>>
mac安装python3
查看>>
HDU 4619 Warm up 2
查看>>
Jmeter中中文乱码
查看>>
矩阵乘法 --- hdu 4920 : Matrix multiplication
查看>>
juggle dsl语法介绍及codegen浅析
查看>>
106:HttpResponse对象讲解
查看>>
Laravel学习笔记(二)
查看>>
linux安装redis服务,配置PHP扩展
查看>>
第七章学习小结
查看>>
sprintf_s的使用
查看>>