首页 后端开发 XML/RSS教程 在java中使用dom4j解析xml(示例代码)

在java中使用dom4j解析xml(示例代码)

Jan 11, 2017 am 11:52 AM

虽然Java中已经有了Dom和Sax这两种标准解析方式

但其操作起来并不轻松,对于我这么一个初学者来说,其中部分代码是活生生的恶心

为此,伟大的第三方开发组开发出了Jdom和Dom4j等工具

鉴于目前的趋势,我们这里来讲讲Dom4j的基本用法,不涉及递归等复杂操作

Dom4j的用法很多,官网上的示例有那么点儿晦涩,这里就不写了

首先我们需要出创建一个xml文档,然后才能对其解析

xml文档:

<?xml version="1.0" encoding="UTF-8"?> 
<books> 
   <book id="001"> 
      <title>Harry Potter</title> 
      <author>J K. Rowling</author> 
   </book> 
   <book id="002"> 
      <title>Learning XML</title> 
      <author>Erik T. Ray</author> 
   </book> 
</books>
登录后复制

示例一:用List列表的方式来解析xml

import java.io.File;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Demo {
 public static void main(String[] args) throws Exception {
  SAXReader reader = new SAXReader();
  File file = new File("books.xml");
  Document document = reader.read(file);
  Element root = document.getRootElement();
  List<Element> childElements = root.elements();
  for (Element child : childElements) {
   //未知属性名情况下
   /*List<Attribute> attributeList = child.attributes();
   for (Attribute attr : attributeList) {
    System.out.println(attr.getName() + ": " + attr.getValue());
   }*/

   //已知属性名情况下
   System.out.println("id: " + child.attributeValue("id"));

   //未知子元素名情况下
   /*List<Element> elementList = child.elements();
   for (Element ele : elementList) {
    System.out.println(ele.getName() + ": " + ele.getText());
   }
   System.out.println();*/

   //已知子元素名的情况下
   System.out.println("title" + child.elementText("title"));
   System.out.println("author" + child.elementText("author"));
   //这行是为了格式化美观而存在
   System.out.println();
  }
 }
}
登录后复制

示例二:使用Iterator迭代器的方式来解析xml

import java.io.File;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Demo {
 public static void main(String[] args) throws Exception {
  SAXReader reader = new SAXReader();
  Document document = reader.read(new File("books.xml"));
  Element root = document.getRootElement();

  Iterator it = root.elementIterator();
  while (it.hasNext()) {
   Element element = (Element) it.next();

   //未知属性名称情况下
   /*Iterator attrIt = element.attributeIterator();
   while (attrIt.hasNext()) {
    Attribute a  = (Attribute) attrIt.next();
    System.out.println(a.getValue());
   }*/

   //已知属性名称情况下
   System.out.println("id: " + element.attributeValue("id"));

   //未知元素名情况下
   /*Iterator eleIt = element.elementIterator();
   while (eleIt.hasNext()) {
    Element e = (Element) eleIt.next();
    System.out.println(e.getName() + ": " + e.getText());
   }
   System.out.println();*/

   //已知元素名情况下
   System.out.println("title: " + element.elementText("title"));
   System.out.println("author: " + element.elementText("author"));
   System.out.println();
  }
 }
}
登录后复制

运行结果:

2016110316252934.png

示例三:创建xml文档并输出到文件

import java.io.File;
import java.io.FileOutputStream;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class Demo {
 public static void main(String[] args) throws Exception {
  Document doc = DocumentHelper.createDocument();
  //增加根节点
  Element books = doc.addElement("books");
  //增加子元素
  Element book1 = books.addElement("book");
  Element title1 = book1.addElement("title");
  Element author1 = book1.addElement("author");

  Element book2 = books.addElement("book");
  Element title2 = book2.addElement("title");
  Element author2 = book2.addElement("author");

  //为子节点添加属性
  book1.addAttribute("id", "001");
  //为元素添加内容
  title1.setText("Harry Potter");
  author1.setText("J K. Rowling");

  book2.addAttribute("id", "002");
  title2.setText("Learning XML");
  author2.setText("Erik T. Ray");

  //实例化输出格式对象
  OutputFormat format = OutputFormat.createPrettyPrint();
  //设置输出编码
  format.setEncoding("UTF-8");
  //创建需要写入的File对象
  File file = new File("D:" + File.separator + "books.xml");
  //生成XMLWriter对象,构造函数中的参数为需要输出的文件流和格式
  XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);
  //开始写入,write方法中包含上面创建的Document对象
  writer.write(doc);
 }
}
登录后复制

运行结果:

在java中使用dom4j解析xml(示例代码)

更多在java中使用dom4j解析xml(示例代码)相关文章请关注PHP中文网!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

手机XML转PDF,转换速度快吗? 手机XML转PDF,转换速度快吗? Apr 02, 2025 pm 10:09 PM

手机XML转PDF的速度取决于以下因素:XML结构的复杂性手机硬件配置转换方法(库、算法)代码质量优化手段(选择高效库、优化算法、缓存数据、利用多线程)总体而言,没有绝对的答案,需要根据具体情况进行优化。

怎么在手机上把XML文件转换为PDF? 怎么在手机上把XML文件转换为PDF? Apr 02, 2025 pm 10:12 PM

不可能直接在手机上用单一应用完成 XML 到 PDF 的转换。需要使用云端服务,通过两步走的方式实现:1. 在云端转换 XML 为 PDF,2. 在手机端访问或下载转换后的 PDF 文件。

手机上如何将XML转换成PDF? 手机上如何将XML转换成PDF? Apr 02, 2025 pm 10:18 PM

直接在手机上将XML转换为PDF并不容易,但可以借助云端服务实现。推荐使用轻量级手机App上传XML文件并接收生成的PDF,配合云端API进行转换。云端API使用无服务器计算服务,选择合适的平台至关重要。处理XML解析和PDF生成时需要考虑复杂性、错误处理、安全性和优化策略。整个过程需要前端App与后端API协同工作,需要对多种技术有所了解。

web.xml怎么打开 web.xml怎么打开 Apr 03, 2025 am 06:51 AM

要打开 web.xml 文件,可以使用以下方法:使用文本编辑器(如记事本或 TextEdit)使用集成开发环境(如 Eclipse 或 NetBeans)使用命令行编辑命令(Windows:notepad web.xml;Mac/Linux:open -a TextEdit web.xml)

xml格式化工具推荐 xml格式化工具推荐 Apr 02, 2025 pm 09:03 PM

XML格式化工具可以将代码按照规则排版,提高可读性和理解性。选择工具时,要注意自定义能力、对特殊情况的处理、性能和易用性。常用的工具类型包括在线工具、IDE插件和命令行工具。

有什么手机APP可以将XML转换成PDF? 有什么手机APP可以将XML转换成PDF? Apr 02, 2025 pm 08:54 PM

无法找到一款将 XML 直接转换为 PDF 的应用程序,因为它们是两种根本不同的格式。XML 用于存储数据,而 PDF 用于显示文档。要完成转换,可以使用编程语言和库,例如 Python 和 ReportLab,来解析 XML 数据并生成 PDF 文档。

xml在线格式化 xml在线格式化 Apr 02, 2025 pm 10:06 PM

XML 在线格式化工具可自动将混乱的 XML 代码整理成易于阅读和维护的格式。通过解析 XML 的语法树并应用格式化规则,这些工具优化了代码的结构,增强了其可维护性和团队协作效率。

xml格式怎么打开 xml格式怎么打开 Apr 02, 2025 pm 09:00 PM

用大多数文本编辑器即可打开XML文件;若需更直观的树状展示,可使用 XML 编辑器,如 Oxygen XML Editor 或 XMLSpy;在程序中处理 XML 数据则需使用编程语言(如 Python)与 XML 库(如 xml.etree.ElementTree)来解析。

See all articles