dom4j操作xml的demo(分享)
程序员文章站
2024-02-17 10:02:04
废话不多说,直接上代码
package com.cn.shop.util;
import java.io.file;
import java.io.fil...
废话不多说,直接上代码
package com.cn.shop.util; import java.io.file; import java.io.fileoutputstream; import java.io.outputstreamwriter; import java.util.iterator; import java.util.list; 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; /** * * @author nh * */ public class xmlutils { public static document getdocument() { // 1.读取xml文件获取document对象 saxreader reader = new saxreader(); document document = null; try { document = reader.read("d:\\itext\\27663.xml"); } catch (documentexception e) { // todo auto-generated catch block e.printstacktrace(); } // 2.通过解析xml的文本 /* * string xmlfilepath = "d:\\itext\\27663.xml"; try { document = * documenthelper.parsetext(xmlfilepath); } catch (documentexception e) * { // todo auto-generated catch block e.printstacktrace(); } // 3.通过 * document document = documenthelper.createdocument(); element root = * document.addelement("csdn"); */ return document; } public static void anaxml() throws exception { // 读取xml的文本内容来创建document对象 saxreader reader = new saxreader(); try { document document = reader.read("d:\\itext\\27663.xml"); element root = document.getrootelement(); system.out.println(root.getname()); getelement(root); /* elementmethod(root); */ /* * // 获取一个节点 element element = root.element("title"); * * * //获取element的id属性节点对象 attribute attr = element.attribute("id"); * //删除属性 element.remove(attr); * * // 添加新属性 element.addattribute("author", "作者"); * * // 添加新的节点 element newelement = root.addelement("where"); // * 设定新节点的值 newelement.settext("北京人民出版社,天津人民大学出版社"); * * // 获取element中的where元素节点对象 element author = * element.element("where"); // 删除元素节点 boolean flag = * element.remove(author); // 返回true代码删除成功,否则失败 * system.out.println(flag); // 添加cdata区域 * element.addcdata("红楼梦,是一部爱情小说."); // 写入到一个新的文件中 writer(document); */ } catch (documentexception e) { // todo auto-generated catch block e.printstacktrace(); } } /* * * 所有节点内容 */ public static void getelement(element root) { // 获取当前节点的所有属性节点 list<attribute> as = root.attributes(); for (attribute a : as) { system.out.println("当前属性节点的名称:" + a.getname()); /* * system.out.println("当前属性节点的内容:" + a.gettext()); * * system.out.println("当前属性节点的值:" + a.getvalue()); */ } if (!root.gettexttrim().equals("")) { system.out.println("文本内容::::" + root.gettext()); } iterator<element> el = root.elementiterator(); while (el.hasnext()) { // 获取某个子节点对象 element e = el.next(); // 对子节点进行遍历 getelement(e); } } /** * 介绍element中的element方法和elements方法的使用 * * @param node */ public static void elementmethod(element node) { // 获取node节点中,子节点的元素名称为西游记的元素节点。 element e = node.element("info"); // 获取西游记元素节点中,子节点为chapter的元素节点(可以看到只能获取第一个作者元素节点) element author = e.element("classification"); system.out.println(e.getname() + "----" + author.gettext()); // 获取西游记这个元素节点 中,所有子节点名称为classification元素的节点 。 list<element> authors = e.elements("classification"); for (element aut : authors) { system.out.println(aut.gettext()); } // 获取西游记这个元素节点 所有元素的子节点。 list<element> elements = e.elements(); for (element el : elements) { system.out.println(el.gettext()); } } /** * 把document对象写入新的文件 * * @param document * @throws exception */ public static void writer(document document) throws exception { // 紧凑的格式 // outputformat format = outputformat.createcompactformat(); // 排版缩进的格式 outputformat format = outputformat.createprettyprint(); // 设置编码 format.setencoding("utf-8"); // 创建xmlwriter对象,指定了写出文件及编码格式 /* * xmlwriter writer = new xmlwriter(new outputstreamwriter(new * fileoutputstream(new file("src//a.xml")), "utf-8"), format); */ file file = new file("c://index//大主宰.xml"); fileoutputstream fos = new fileoutputstream(file); outputstreamwriter osw = new outputstreamwriter(fos, "utf-8"); xmlwriter writer = new xmlwriter(osw); // 写入 writer.write(document); // 立即写入 writer.flush(); // 关闭操作 writer.close(); } // 以下的代码为字符串与xml互转实例 public void test() throws exception { // 创建saxreader对象 saxreader reader = new saxreader(); // 读取一个文件,把这个文件转换成document对象 document document = reader.read(new file("src//c.xml")); // 获取根元素 element root = document.getrootelement(); // 把文档转换字符串 string docxmltext = document.asxml(); system.out.println(docxmltext); system.out.println("---------------------------"); // csdn元素标签根转换的内容 string rootxmltext = root.asxml(); system.out.println(rootxmltext); system.out.println("---------------------------"); // 获取java元素标签 内的内容 element e = root.element("java"); system.out.println(e.asxml()); } /** * 创建一个document对象 往document对象中添加节点元素 转存为xml文件 * * @throws exception */ public void test2() throws exception { document document = documenthelper.createdocument();// 创建根节点 element root = document.addelement("csdn"); element java = root.addelement("java"); java.settext("java班"); element ios = root.addelement("ios"); ios.settext("ios班"); writer(document); } /** * 把一个文本字符串转换document对象 * * @throws exception */ public void test1() throws exception { string text = "<csdn><java>java班</java><net>net班</net></csdn>"; document document = documenthelper.parsetext(text); element e = document.getrootelement(); system.out.println(e.getname()); writer(document); } /** * 把document对象写入新的文件 * * @param document * @throws exception */ public void writer1(document document) throws exception { // 紧凑的格式 // outputformat format = outputformat.createcompactformat(); // 排版缩进的格式 outputformat format = outputformat.createprettyprint(); // 设置编码 format.setencoding("utf-8"); // 创建xmlwriter对象,指定了写出文件及编码格式 // xmlwriter writer = new xmlwriter(new filewriter(new // file("src//a.xml")),format); xmlwriter writer = new xmlwriter(new outputstreamwriter(new fileoutputstream(new file("src//c.xml")), "utf-8"), format); // 写入 writer.write(document); // 立即写入 writer.flush(); // 关闭操作 writer.close(); } public static void main(string[] args) { try { anaxml(); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } } }
以上这篇dom4j操作xml的demo(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
上一篇: .NetCore命令行配置
下一篇: 我的一些关于web标准的思考笔记(一)