编写Java程序,使用 dom4j 创建一个 XML 文档,文档名为“city.xml”。注意该文档的格式和数据

简介: 编写Java程序,使用 dom4j 创建一个 XML 文档,文档名为“city.xml”。注意该文档的格式和数据

需求说明:


使用 dom4j 创建一个 XML 文档,文档名为“city.xml”。该文档的格式和数据如图所示


image.png

实现思路:


创建Java项目,添加dom4j对应jar包,创建CreateCityXML类

调用DocumentHelper的createDocument方法创建根节点,调用addAttribute方法设置name属性,并且设置为根节点

调用DocumentHelper的createDocument方法创建子节点,调用对应父节点Element对象的add方法添加子节点(注意父子关系结构顺序)

如果需要属性则调用Element对象的addAttribute设置,如果需要内容则调用setText方法设置内容

最后使用OutputFormat.createPrettyPrint()创建格式化保存对象,对Xml文档的保存工作

创建main方法调用创建方法及保存方法进行测试


实现代码:


import java.io.FileWriter;
import java.io.IOException;
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;
public class CreateCityXML {
  private Document document;
  private Element rootElement;
  // 该方法用于创建根节点
  public void createRootElement() {
    // 创建XML文件的文档对象
    document = DocumentHelper.createDocument();
    // 创建根节点
    rootElement = DocumentHelper.createElement("country");
    // 为根节点添加属性name
    rootElement.addAttribute("name", "中国");
    // 将rootElement设为根节点
    document.setRootElement(rootElement);
  }
  // 该方法用于创建子节点
  public void createChildElement() {
    // 创建湖北省子节点
    Element hubeiElement = DocumentHelper.createElement("province");
    // 为湖北省节点添加属性
    hubeiElement.addAttribute("name", "湖北");
    // 创建武汉市节点
    Element wuhanElement = DocumentHelper.createElement("city");
    // 为武汉市节点设置文本内容
    wuhanElement.setText("武汉");
    // 创建十堰市节点
    Element shiyanElement = DocumentHelper.createElement("city");
    // 为十堰市节点设置文本内容
    shiyanElement.setText("十堰");
    // 将武汉市节点和十堰市节点添加到湖北省节点内
    hubeiElement.add(wuhanElement);
    hubeiElement.add(shiyanElement);
    // 添加湖北省子节点到根节点中
    rootElement.add(hubeiElement);
    // 创建浙江省子节点
    Element zhejiangElement = DocumentHelper.createElement("province");
    // 为浙江省节点添加属性
    zhejiangElement.addAttribute("name", "浙江");
    // 创建杭州市节点
    Element hangzhouElement = DocumentHelper.createElement("city");
    // 为杭州市节点设置文本内容
    hangzhouElement.setText("杭州");
    // 创建宁波市节点
    Element ningboElement = DocumentHelper.createElement("city");
    // 为宁波市节点设置文本内容
    ningboElement.setText("宁波");
    // 将杭州市节点和宁波市节点添加到湖北省节点内
    zhejiangElement.add(hangzhouElement);
    zhejiangElement.add(ningboElement);
    // 添加浙江省子节点到根节点中
    rootElement.add(zhejiangElement);
  }
  // 将数据写入XML文档
  public void createXML(String path) {
    // 创建OutputFormat对象,用于格式化输出
    OutputFormat format = OutputFormat.createPrettyPrint();
    // 设置文档的编码
    format.setEncoding("UTF-8");
    try {
      // 创建XMLWriter对象,用于输出XML文档
      XMLWriter writer = new XMLWriter(new FileWriter(path), format);
      // 将Document文档输入到city.xml文件中
      writer.write(document);
      writer.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public static void main(String[] args) {
    CreateCityXML createCityXML = new CreateCityXML();
    // 创建文档和根节点
    createCityXML.createRootElement();
    // 创建子节点
    createCityXML.createChildElement();
    // 生成XML文件
    createCityXML.createXML("H:/city.xml");
  }
}
相关文章
|
18天前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
33 1
|
2天前
|
Java
jvm复习,深入理解java虚拟机一:运行时数据区域
这篇文章深入探讨了Java虚拟机的运行时数据区域,包括程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区、元空间和运行时常量池,并讨论了它们的作用、特点以及与垃圾回收的关系。
29 19
jvm复习,深入理解java虚拟机一:运行时数据区域
|
3天前
|
JSON 前端开发 Java
震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)
文章介绍了Java后端如何使用Spring Boot框架响应不同格式的数据给前端,包括返回静态页面、数据、HTML代码片段、JSON对象、设置状态码和响应的Header。
28 1
震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)
|
12天前
|
Java Linux
java读取linux服务器下某文档的内容
java读取linux服务器下某文档的内容
26 3
java读取linux服务器下某文档的内容
|
15天前
|
安全 Java 开发者
Java修饰符与封装:理解访问权限、行为控制与数据隐藏的重要性
Java中的修饰符和封装概念是构建健壯、易维护和扩展的Java应用程序的基石。通过合理利用访问权限修饰符和非访问修饰符,开发者能够设计出更加安全、灵活且高效的代码结构。封装不仅是面向对象编程的核心原则之一,也是提高软件项目质量和可维护性的关键策略。
13 1
|
3天前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
59 0
|
1月前
|
Java API 开发者
代码小妙招:用Java轻松获取List交集数据
在Java中获取两个 `List`的交集可以通过 `retainAll`方法和Java 8引入的流操作来实现。使用 `retainAll`方法更为直接,但会修改原始 `List`的内容。而使用流则提供了不修改原始 `List`、更为灵活的处理方式。开发者可以根据具体的需求和场景,选择最适合的方法来实现。了解和掌握这些方法,能够帮助开发者在实际开发中更高效地处理集合相关的问题。
43 1
|
XML 数据格式
Java-Dom4jHelper工具类
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.
1256 0
|
14天前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
34 2
|
2天前
|
Java 关系型数据库 MySQL
如何用java的虚拟线程连接数据库
本文介绍了如何使用Java虚拟线程连接数据库,包括设置JDK版本、创建虚拟线程的方法和使用虚拟线程连接MySQL数据库的示例代码。
17 6
如何用java的虚拟线程连接数据库