废话不多说,直接上代码
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) { // 获取当前节点的所有属性节点 Listas = 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 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 authors = e.elements("classification"); for (Element aut : authors) { System.out.println(aut.getText()); } // 获取西游记这个元素节点 所有元素的子节点。 List 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 = " "; 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(); } } } Java班 Net班
以上这篇dom4j操作xml的demo(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。