dom4j操作xml的demo(分享)

时间:2021-05-20

废话不多说,直接上代码

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 blocke.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);/** // 获取一个节点 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 blocke.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 blocke.printStackTrace();}}}

以上这篇dom4j操作xml的demo(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章