查看本章节

查看作业目录


需求说明:

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

实现思路:

  1. 创建Java项目,添加dom4j对应jar包,创建CreateCityXML类
  2. 调用DocumentHelper的createDocument方法创建根节点,调用addAttribute方法设置name属性,并且设置为根节点
  3. 调用DocumentHelper的createDocument方法创建子节点,调用对应父节点Element对象的add方法添加子节点(注意父子关系结构顺序)
  4. 如果需要属性则调用Element对象的addAttribute设置,如果需要内容则调用setText方法设置内容
  5. 最后使用OutputFormat.createPrettyPrint()创建格式化保存对象,对Xml文档的保存工作
  6. 创建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");
}
}

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

  1. 编写Java程序,随机给定一个数字猜大小

    返回本章节 返回作业目录 需求说明: 由系统随机生成一个1~100之间的整数. 通过控制台一直输入一个整数,比较该数与系统随机生成的那个数,如果大就输出"猜大了.",继续输入:如果 ...

  2. 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n

      35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...

  3. 在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM

    题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 m ...

  4. Java初学者作业——编写Java程序,输入一个数字,实现该数字阶乘的计算。

    返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个数字,实现该数字阶乘的计算.一个数字的阶乘是所有小于及等于该数的正整数的积,自然数n的阶乘写作n! .例如,5的阶乘等于1*2*3*4* ...

  5. Java初学者作业——编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字。

    返回本章节 返回作业目录 需求说明: 编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字. 实现思路: 定义方法findNums(),用于实现查找所有能够整除指定数 ...

  6. Java初学者作业——编写Java程序,输入一个学生的5门课程的成绩,求其平均分。

    返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个学生的5门课程的成绩,求其平均分.计算平均成绩,需要将每一门课程的成绩逐步累加到总成绩中,使用 for 循环实现,然后求出平均分. 实现 ...

  7. 编写Java程序,用户在网上购买商品(good),当用户买了一本书(book)、一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户,使用简单工厂模式模拟这一过程。

    查看本章节 查看作业目录 需求说明: 编写Java程序,用户在网上购买商品(good),当用户买了一本书(book).一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户, ...

  8. 初学编写JAVA程序

    一.编写JAVA程序 编写JAVA程序,输出一行文本信息:“Hello world”,选择编辑器eclipse,打开之后编写程序 public class Hello{ public static v ...

  9. 在C#/.NET应用程序开发中创建一个基于Topshelf的应用程序守护进程(服务)

    本文首发于:码友网--一个专注.NET/.NET Core开发的编程爱好者社区. 文章目录 C#/.NET基于Topshelf创建Windows服务的系列文章目录: C#/.NET基于Topshelf ...

随机推荐

  1. Linux定时任务crontable简介

    Linux下定时执行任务的方法:Linux之crond 服务介绍:https://www.cnblogs.com/liang-io/p/9596294.html http://www.mamicode ...

  2. 【C/C++】从矩阵左上角走到右下角

    tx的笔试,但是只过了10%,就离谱 #include <bits/stdc++.h> using namespace std; const int maxn = 1010; long d ...

  3. Rust开发环境搭建和hello world工程

    windows10 WSL 打开wsl,执行以下命令 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 出现安装选项,选择1 ...

  4. gitlab 备份&恢复

    Gitlab 成功运行起来之后,最终的事情就是定期的备份,遇到问题后的还原. 备份配置 默认 Gitlab 的备份文件会创建在/var/opt/gitlab/backups文件夹中,格式为时间戳_日期 ...

  5. 配置文件管理维护到gitlab上

    一.简介 在日常维护服务器中,会修改配置文件或者相应脚本,在修改前要对文件进行按照日期备份,这样会很麻烦,频繁修改的时候也会懒得去备份多个. 维护脚本分为服务端和客户端,服务端监听端口,接收客户端的采 ...

  6. 洛谷 11 月月赛 I Div.2 A [Kubic] Addition 题解

    Content 你有一个长度为 \(n\) 的序列 \(a\).你可以执行 \(n-1\) 次操作,每次操作中你可以选择一个位置 \(i\),并删除 \(a_i\) 和 \(a_{i+1}\),再在原 ...

  7. 7.2 Tornado异步

    7.2 Tornado异步 因为epoll主要是用来解决网络IO的并发问题,所以Tornado的异步编程也主要体现在网络IO的异步上,即异步Web请求. 1. tornado.httpclient.A ...

  8. [WPF] 实现 WPF 的 Inner Shadow

    在 WPF 中,我们通常用 DropShadow 做阴影效果,但都是做外阴影.内阴影(Inner Shadow)的话其实也不是不可以,就是有些曲折.这篇文章介绍几种做内引用的做法. 文章涉及到以下概念 ...

  9. 手把手教你如何使用 webpack5 的模块联邦新特性

    想象一下,在webpack5还没出来前,前端使用第三方组件库,例如使用 dayjs 日期处理库,都是通过 npm i dayjs -s 安装 dayjs 模块到项目里,然后就可以通过 require ...

  10. vue-子组件创建/注册/使用流程

    流程分为三步 非单文件组件:(实际不用,因为很麻烦,框架都是多文件组件) 局部注册 1.创建一个组件 const school = Vue.extend({ // 传入配置对象 // 子组件配置对象不 ...