DOM4j本身还是需要使用SAX建立解析器,然后通过文档依次找到根节点,再通过根节点查找每一个节点的内容.

1.写操作

import java.io.File;
import java.io.FileOutputStream;
import java.util.Iterator;

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;

public static void main(String[] args) {
  // 1.创建文档
  Document doc = DocumentHelper.createDocument();
  // 2.定义节点及子节点
  Element addresslist = doc.addElement("addresslist");
  Element linkman = addresslist.addElement("linkman");
  // 定义子节点
  Element name = linkman.addElement("name");
  Element email = linkman.addElement("email");

  // 3.设置节点内容
  name.setText("祖国");
  email.setText("mxzer3200@126.com");

  // 4.设置输出格式
  OutputFormat format = OutputFormat.createPrettyPrint();
  format.setEncoding("GBK"); // 设置输出编码
  // 输出xml
  try {
    XMLWriter writer = new XMLWriter(new FileOutputStream(new File("e:"+ File.separator + "dom4j2.xml")), format);
    writer.write(doc);
    writer.close();
  } catch (Exception e) {
    e.printStackTrace();
  }
}

生成的xml文件已格式排列的:

2.读操作

/**
* 读操作
* 使用SAX建立解析器,然后通过文档依次找到根节点,然后通过根节点找到每一个节点的内容。
*/
public static void main(String[] args) {
  // 1.读取文件
  File file = new File("e:" + File.separator + "dom4j2.xml");
  // 2.建立SAX解析读取
  SAXReader reader = new SAXReader();
  // 3.读取文档
  Document doc = null;
  try {
    doc = reader.read(file);
  } catch (DocumentException e) {
    e.printStackTrace();
  }
  // 4.获取根元素
  Element root = doc.getRootElement();
  // System.out.println(root.getName());
  Iterator it = root.elementIterator(); // 获取全部子节点
  while (it.hasNext()) {
    Element linkman = (Element) it.next();
    System.out.println("姓名:" + linkman.elementText("name"));
    System.out.println("邮箱:" + linkman.elementText("email"));
  }
}

3.解析xml方式2

<?xml version="1.0" encoding="UTF-8"?>
<Response service="ConfirmService">
  <Head>ERR</Head>
  <ERROR code="4001">系统发生数据错误或运行时异常</ERROR>
</Response>

String xml = "<?xml version=\'1.0\' encoding=\'UTF-8\'?><Response service=\"ConfirmService\"><Head>ERR</Head><ERROR code=\"4001\">系统发生数据错误或运行时异常</ERROR></Response>";
System.out.println(xml);
Map<String, String> map = parseXml(xml);
Iterator it = map.entrySet().iterator();
while (it.hasNext()) {
  Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next();
  System.out.println(entry.getKey() + ": " + entry.getValue());
}

/**
* 解析XML
* @param parseXml
* @return
*/
private static Map<String, String> parseXml(String parseXml) {
  Map<String, String> map = new HashMap<String, String>();
  String resultHeader = "";
  String errorCode = "";
  String errorDetail = "";

  try {
    // Parse Xml
    Document document = DocumentHelper.parseText(parseXml);
    // Parse Header
    List<Element> list = document.selectNodes("//" + "Head");
    if (list != null && list.size() > 0) {
      Element e = list.get(0);
      List<Element> els = e.elements();
      if (els.size() == 0) {
        resultHeader = e.getText().trim();
      }
    }
  // Parse Error
  list = document.selectNodes("//" + "ERROR");
  if (list != null && list.size() > 0) {
    Element e = list.get(0);
    List<Element> els = e.elements();
    if (els.size() == 0) {
      errorCode = e.attributeValue("code");
      errorDetail = e.getTextTrim();
    }
  }
  } catch (Exception e) {
    resultHeader = "ERR";
    errorCode = "9999";
    errorDetail = "XML解析错误:" + e.getMessage();
  }

  // Set Map
  map.put("header", resultHeader);
  map.put("errCode", errorCode);
  map.put("errDetail", errorDetail);
  return map;
}

转载于:https://www.cnblogs.com/mxzer/p/6423066.html

(五)DOM4j进行XML文件的解析及生成相关推荐

  1. (二)使用Dom4j对XML文件进行解析

    目录 1.XML解析概念 2.Dom4j解析过程 1.XML解析概念 XML解析技术:   HTML和XML都是标记型文档,可以使用W3C组织制定的DOM技术来解析.(DOM把所有标签表示为对象) d ...

  2. XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML

    XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...

  3. Dom4j解析Xml文件,Dom4j创建Xml文件

    Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...

  4. Java自定义生成与解析(Dom4J)XML文件

    XML(Extensible Markup Language):可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 应用:XML 应用于 web 开发的许多方面, ...

  5. dom4j读写xml文件

    dom4j读写xml文件 首先我们给出一段示例程序: import java.io.File; import java.io.FileWriter; import java.util.Iterator ...

  6. DOM4j读取XML文件(SAXReader)

    为什么80%的码农都做不了架构师?>>>    DOM4j读取XML文件(SAXReader) 一.一个很好的SAXReader读写xml文件的例题: 总结: Document do ...

  7. IOS开发基础之使用AFNetworking框架实现xml文件的解析

    IOS开发基础之使用AFNetworking框架实现xml文件的解析 info.plist加入这行代码 <key>NSAppTransportSecurity</key> &l ...

  8. dom4j读取XML文件内容

    转载自  dom4j读取XML文件内容 <?xml version="1.0" encoding="UTF-8"?> <RESULT> ...

  9. Dom4j工具--XML的DOM解析(下)--写操作

    前言: 上一篇博客我开始了用Dom4j对XML进行了读操作,这篇博客主要是进行对XML的写操作 只涉及基础的内容,只要有javase基础和eclipse的使用 就可以完成, 往后的内容包括 " ...

最新文章

  1. 6.6 二分 K-Means 算法-机器学习笔记-斯坦福吴恩达教授
  2. linux防火墙 限制端口,Linux开启防火墙并限制开放端口
  3. 云视睿博流媒体服务器Lit,《云视睿博流媒体服务器参数表.docx
  4. mac VMware Fusion 虚拟机键盘可以使用,鼠标无法使用排查思路及解决方法
  5. Java错别字检查_java中关于异常的处理
  6. JDK 12,合并的收集器和命名的挑战
  7. 两天,我把分布式事务搞完了
  8. 什么是数据库触发器?
  9. mid制作乐谱_乐谱编辑(在线简谱制作软件)
  10. 信息资源管理——基础
  11. 电商商品中心类目体系
  12. 计算机课英语怎么读音标,【英语课堂】48个国际音标表及发音详解图
  13. proteus 中89c51芯片如何显示vcc和gnd
  14. asp毕业设计——基于asp+access的学生论坛设计与实现(毕业论文+程序源码)——学生论坛
  15. linux 跨网段ping,Linux中跨网段ping问题
  16. 在上海奋斗的五年---从月薪3500到700万 (一个西北真汉子的人生)
  17. MFC学习篇:鸡啄米MFC教程字体格式设置函数解析
  18. 叶俊获“约翰·格雷博士中国行”最佳贡献奖
  19. 数学建模常用算法—灰色预测
  20. 手把手教你如何用Python从PDF文件中导出数据(附链接)

热门文章

  1. Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
  2. 机器学习-cs229-线性回归-梯度下降法
  3. 设计模式--程序猿必备面向对象设计原则
  4. C语言非常重要的细节(知道一点更新一点)
  5. understand软件使用教程
  6. 【个人网盘-updog】使用updog建立个人网盘,so easy
  7. python3(十一)内置模块和类型转换
  8. 信号处理深度学习机器学习_机器学习和信号处理如何融合?
  9. 网卡驱动:stmmac DMA发送流程
  10. PHP(四)——性能优化