查看本章节

查看作业目录


需求说明:

使用 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. mysql index 8.0

    创建表 use vodb; drop table if exists test1; create table test1(id int NOT NULL AUTO_INCREMENT primary ...

  2. 【Python】【Basic】【数据类型】基本数据类型

    1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值范围为-2 ...

  3. 【编程思想】【设计模式】【行为模式Behavioral】registry

    Python版 https://github.com/faif/python-patterns/blob/master/behavioral/registry.py #!/usr/bin/env py ...

  4. React 传值 组件传值 之间的关系

    react 组件相互之间的传值: 传值分父级组件传值给子组件   子组件传值给父组件    平级组件.没有嵌套的组件相互传值 1.父组件向子组件传值 父组件通过属性的形式来向子组件传值,子组件通过pr ...

  5. 10.Object类

    在JAVA中,所有的类都直接或间接继承了Java.lang.Object类Object是一个特殊的类,他是所有类的父类,是Java类层中的最高层类.当创建一个类时,他总是在继承,除非某个类已经指定要从 ...

  6. 【阿菜做实践】利用ganache-cli本地fork以太坊主链分叉

    前言 Fork主网意思是模拟具有与主网相同的状态的网络,但它将作为本地开发网络工作. 这样你就可以与部署的协议进行交互,并在本地测试复杂的交互.不用担心分叉主网作为测试链会占很多内存.这些方法都不会将 ...

  7. SimpleCursorAdapter 原理和实例

    SimpleCursorAdapter 1. 原理参见下面代码注释 Cursor cursor = dbHelper.fetchAllCountries(); //cursor中存储需要加载到list ...

  8. [Java Web 王者归来]读书笔记3

    第四章 JSP JSP基本语法 1 JSP中嵌入Java 代码 <% Java code %> 2 JSP中输出 <%= num %> 3 JSP 中的注释 <%-- - ...

  9. JS 双向数据绑定、单项数据绑定

    简单的双向数据绑定 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  10. 惊天大bug,一把螺丝刀,竟让我有家难回!

    1.回家路上看一地摊,螺丝刀2元一把,买了一个 2.芒格说:"如果你的工具只有一把锤子,你会认为任何问题都是钉子 " 那么当我手里有了一把起子,我看啥都是螺丝钉子. 出租屋里固定门 ...