您好,欢迎访问一九零五行业门户网

dom4j 操作xml文件(全)

在项目中,我们很多都用到了xml文件,无论是参数配置还是与其它系统的数据交互。
今天就来讲一下java 中使用dom4j来操作xml文件。
我们需要引入的包:
//文件包 import java.io.bytearrayoutputstream; import java.io.file; import java.io.filewriter; //工具包 import java.util.iterator; import java.util.list; //dom4j包 import org.dom4j.attribute; import org.dom4j.document; import org.dom4j.documenthelper; import org.dom4j.element; import org.dom4j.io.outputformat; import org.dom4j.io.saxreader; import org.dom4j.io.xmlwriter;
1、将xml文件的内容转化为string
/** * doc2string * 将xml文档内容转为string * @return 字符串 * @param document */ public static string doc2string(document document) { string s = ""; try { //使用输出流来进行转化 bytearrayoutputstream out = new bytearrayoutputstream(); //使用gb2312编码 outputformat format = new outputformat(" ", true, "gb2312"); xmlwriter writer = new xmlwriter(out, format); writer.write(document); s = out.tostring("gb2312"); }catch(exception ex) { ex.printstacktrace(); } return s; }
2、将符合xml格式的string 转化为xml document
/** * string2document * 将字符串转为document * @return * @param s xml格式的字符串 */ public static document string2document(string s) { document doc = null; try { doc = documenthelper.parsetext(s); }catch(exception ex) { ex.printstacktrace(); } return doc; }
3、将document对象保存为一个xml文件到本地
/** * doc2xmlfile * 将document对象保存为一个xml文件到本地 * @return true:保存成功 flase:失败 * @param filename 保存的文件名 * @param document 需要保存的document对象 */ public static boolean doc2xmlfile(document document,string filename) { boolean flag = true; try { /* 将document中的内容写入文件中 */ //默认为utf-8格式,指定为"gb2312" outputformat format = outputformat.createprettyprint(); format.setencoding("gb2312"); xmlwriter writer = new xmlwriter(new filewriter(new file(filename)),format); writer.write(document); writer.close(); }catch(exception ex) { flag = false; ex.printstacktrace(); } return flag; }
4、将xml格式的字符串保存为本地文件,如果字符串格式不符合xml规则,则返回失败
/** * string2xmlfile * 将xml格式的字符串保存为本地文件,如果字符串格式不符合xml规则,则返回失败 * @return true:保存成功 flase:失败 * @param filename 保存的文件名 * @param str 需要保存的字符串 */ public static boolean string2xmlfile(string str,string filename) { boolean flag = true; try { document doc = documenthelper.parsetext(str); flag = doc2xmlfile(doc,filename); }catch (exception ex) { flag = false; ex.printstacktrace(); } return flag; }
5、载入一个xml文档
/** * load * 载入一个xml文档 * @return 成功返回document对象,失败返回null * @param uri 文件路径 */ public static document load(string filename) { document document = null; try { saxreader saxreader = new saxreader(); document = saxreader.read(new file(filename)); } catch (exception ex){ ex.printstacktrace(); } return document; }
6、演示string保存为xml文件
/** * xmlwritedemobystring * 演示string保存为xml文件 */ public void xmlwritedemobystring() { string s = ""; /** xml格式标题 "<?xml version='1.0' encoding='gb2312'?>" 可以不用写*/ s = "<config>\r\n" +" <ftp name='dongdian'>\r\n" +" <ftp-host>127.0.0.1</ftp-host>\r\n" +" <ftp-port>21</ftp-port>\r\n" +" <ftp-user>cxl</ftp-user>\r\n" +" <ftp-pwd>longshine</ftp-pwd>\r\n" +" <!-- ftp最多尝试连接次数 -->\r\n" +" <ftp-try>50</ftp-try>\r\n" +" <!-- ftp尝试连接延迟时间 -->\r\n" +" <ftp-delay>10</ftp-delay>\r\n" +" </ftp>\r\n" +"</config>\r\n"; //将文件生成到classes文件夹所在的目录里 string2xmlfile(s,"xmlwritedemobystring.xml"); //将文件生成到classes文件夹里 string2xmlfile(s,"classes/xmlwritedemobystring.xml"); }
7、演示手动创建一个document,并保存为xml文件
/** * 演示手动创建一个document,并保存为xml文件 */ public void xmlwritedemobydocument() { /** 建立document对象 */ document document = documenthelper.createdocument(); /** 建立config根节点 */ element configelement = document.addelement("config"); /** 建立ftp节点 */ configelement.addcomment("东电ftp配置"); element ftpelement = configelement.addelement("ftp"); ftpelement.addattribute("name","dongdian"); /** ftp 属性配置 */ element hostelement = ftpelement.addelement("ftp-host"); hostelement.settext("127.0.0.1"); (ftpelement.addelement("ftp-port")).settext("21"); (ftpelement.addelement("ftp-user")).settext("cxl"); (ftpelement.addelement("ftp-pwd")).settext("longshine"); ftpelement.addcomment("ftp最多尝试连接次数"); (ftpelement.addelement("ftp-try")).settext("50"); ftpelement.addcomment("ftp尝试连接延迟时间"); (ftpelement.addelement("ftp-delay")).settext("10"); /** 保存document */ doc2xmlfile(document,"classes/xmlwritedemobydocument.xml"); }
8、演示读取文件的具体某个节点的值
/** * 演示读取文件的具体某个节点的值 */ public static void xmlreaddemo() { document doc = load("classes/xmlwritedemobydocument.xml"); //element root = doc.getrootelement(); /** 先用xpath查找所有ftp节点 并输出它的name属性值*/ list list = doc.selectnodes("/config/ftp" ); iterator it = list.iterator(); while(it.hasnext()) { element ftpelement = (element)it.next(); system.out.println("ftp_name="+ftpelement.attribute("name").getvalue()); } /** 直接用属性path取得name值 */ list = doc.selectnodes("/config/ftp/@name" ); it = list.iterator(); while(it.hasnext()) { attribute attribute = (attribute)it.next(); system.out.println("@name="+attribute.getvalue()); } /** 直接取得dongdian ftp的 ftp-host 的值 */ list = doc.selectnodes("/config/ftp/ftp-host" ); it = list.iterator(); element hostelement=(element)it.next(); system.out.println("dongdian's ftp_host="+hostelement.gettext()); }
9、修改或删除某个值或属性
/** ftp节点删除ftp-host节点 */ ftpelement.remove(hostelement); /** ftp节点删除name属性 */ ftpelement.remove(nameattribute); /** 修改ftp-host的值 */ hostelement.settext("192.168.0.1"); /** 修改ftp节点name属性的值 */ nameattribute.setvalue("chifeng");
以上就是 dom4j 操作xml文件(全)的内容。
其它类似信息

推荐信息