使用Dom4j对XML文档创建与解析
创建XML文件:
public class Dom4jCreateXml {
public void testCreatXml() {
//创建文档对象
Document document = DocumentHelper.createDocument();
//创建跟节点
Element root = document.addElement("students");
//根据根节点创建子节点
Element stu01 = root.addElement("student");
//添加student子节点id属性
stu01.addAttribute("id", "001");
//根据student子节点创建name子节点
Element stu01Name = stu01.addElement("name");
//给子节点name添加文本
stu01Name.addText("zhangsan");
//根据stu01创建子节点age
Element stu01Age = stu01.addElement("age");
//给子节点age添加文本
stu01Age.addText("23");
//设置输出编码格式
OutputFormat format = OutputFormat.createCompactFormat();
format.setEncoding("utf-8");
//输出指定的xml文件
Writer out;
try {
out = new FileWriter("E://lazyli/test.xml");
//创建XML输出对象,以指定的格式输出
XMLWriter writer = new XMLWriter(out, format);
writer.write(document);
System.out.println("生成xml文件成功!");
out.close();
} catch (Exception e) {
System.out.println("生成xml文件失败!");
e.printStackTrace();
}
}
/**
* 创建一个html格式的xml
* <?xml version="1.0" encoding="UTF-8"?>
* <Packet type="REQUEST" version="1.0">
* <Head>
* <RequestID> AC00003900021456305194844</RequestID>
* <RequestType>0002</RequestType>
* <User>AC000039</User>
* <Password>bc0TYXab4UjcZiOtX9XpdQ</Password>
* </Head>
* <Body>
* ……
* </Body>
* </Packet>
*/
public void testCreatXml2() {
//创建一个Document对象
Document document = DocumentHelper.createDocument();
//创建一个根节点
Element root = document.addElement("Packet");
//设置根节点属性
root.addAttribute("type", "REQUEST");
root.addAttribute("version", "1.0");
//创建root的子节点head,body
Element eleHead = root.addElement("head");
Element eleBody = root.addElement("body");
//处理子节点head,有三个子节点RequestType,User,Password,并添加各个的文本
Element eleRequestType = eleHead.addElement("RequestType");
eleRequestType.addText("AC00003900021456305194844");
Element eleUser = eleHead.addElement("User");
eleUser.addText("AC000039");
Element elePassword = eleHead.addElement("Password");
elePassword.addText("bc0TYXab4UjcZiOtX9XpdQ");
//处理子节点Body,添加子节点hello,文本world
Element eleHello = eleBody.addElement("Hello");
eleHello.addText("world");
//指定文档输出编码格式
OutputFormat format = OutputFormat.createCompactFormat();
format.setEncoding("utf-8");
Writer out;
try {
//创建一个文档输出流对象,向指定的文件中输入
out = new FileWriter("E://lazyli/test02.xml");
//创建XMLWriter对象
XMLWriter writer = new XMLWriter(out, format);
writer.write(document);
System.out.println("成功生成xml文件!");
out.close();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Dom4jCreateXml createXml = new Dom4jCreateXml();
// createXml.testCreatXml();
createXml.testCreatXml2();
}
}
XML文件的解析
public class ParseXml01 {
User user = new User();
//递归遍历xml文档,获取里面的元素
public void parseElement02(Element rootElement) {
Element element;
//使用迭代器遍历根节点
for (Iterator iterator = rootElement.elementIterator(); iterator.hasNext(); ) {
//获取根子节下面的节点
element = (Element) iterator.next();
//打印节点的名字和文本
//System.out.println("当前节点:" + element.getName() + ",文本:" +element.getTextTrim());
//将文件中的用户信息提取出来
if (element.getName().equals("User")) {
if (element.getName() != null && element.getName() != "") {
user.setName(element.getTextTrim());
}
}
if (element.getName().equals("Password")) {
if (element.getName() != null && element.getName() != "") {
user.setPassword(element.getTextTrim());
}
}
//判断当前节点是否存在子节点,存在的话就继续遍历
//得到节点类型,为1代表有子节点
if (element.getNodeType() == Node.ELEMENT_NODE) {
if (element.hasContent()) {
parseElement02(element);
}
}
}
}
//解析
public void parseXmlMethod(File file) throws Exception {
//创建SAXReader解析对象
SAXReader reader = new SAXReader();
//根据SAXReader对象创建Document对象
Document document = reader.read(file);
//document对象得到根节点
Element eleRoot = document.getRootElement();
//打印root信息
System.out.println("根元素:" + eleRoot.getName() + ",属性:");
//调用递归方法进行解析节点信息
parseElement02(eleRoot);
}
//打印用户信息
public void userInfo() throws Exception {
//调用解析方法,解析文件,输出文件中的用户信息
parseXmlMethod(new File("E://lazyli/test02.xml"));
System.out.println("用户名:" + user.getName() + ",密码:" + user.getPassword());
}
public static void main(String[] args) throws Exception {
ParseXml01 parseXml01 = new ParseXml01();
parseXml01.userInfo();
}
}
使用Dom4j对XML文档创建与解析的更多相关文章
- dom4j读写XML文档
dom4j 最常用最简单的用法(转) 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:http:/ ...
- 使用DOM4J生成XML文档
package xml; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; imp ...
- 【XML】利用Dom4j读取XML文档以及写入XML文档
Dom4j简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能 ...
- 2.2 使用 JAXP 对XML文档进行SAX解析
使用JAXP 对 XML文档进行 SAX解析: public class Demo1 { /** * 使用JAXP对XML文档进行SAX解析 * @throws Exception * @throws ...
- 2.1 使用JAXP 对 xml文档进行DOM解析
//使用 jaxp 对xml文档进行dom解析 public class Demo2 { //必要步骤 @Test public void test() throws Exception { //1. ...
- dom4j操作xml文档
java Dom4j解析XML文件 标签(空格分隔):java进阶 xml文档: <?xml version="1.0" encoding="UTF-8" ...
- Dom4j修改xml文档引入
前面介绍了如何解析xnl文档的内容,这里对修改xml展开讨论. 一.首先看一下,写出内容到xml文档的主要代码: XMLWriter writer = new XMLWriter(OutputStre ...
- Dom4j修改xml文档
1. 写出内容到xml文档 XMLWriter writer = new XMLWriter(OutputStream, OutputForamt) wirter.write(Document); 2 ...
- 使用JAXP对xml文档进行DOM解析基础
XML解析方式分为两种:dom和sax dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式. sax: ...
随机推荐
- BigData_Jia
#include <stdio.h> #include <string.h> #define MaxSize 10000 int n1, n2, i, k, times; ch ...
- java数据结构之HashSet和HashMap(java核心卷Ⅰ读书笔记)
增加 删除 remove方法,可以删除指定的一个元素. 查找 ********************* **************************** HashSet既不可以用 0 1 2 ...
- Java高级特性 第8节 网络编程技术
一.网络概述 1.网络的概念和分类 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统.网络编程就就是编写程序使联网的两个(或多个)设 ...
- 信号监测---verilog
信号监测---verilog 此模块用于监测某一信号源是否持续稳定的传送. 监测思路:监测信号源高电平或者低电平的宽度是否始终保持一致(一定范围内允许有误差) `timescale 1ns / 1ps ...
- winform 打印时的默认单位
通过设置Graphics.PageUnit,是枚举类型GraphicsUnit,默认是display(指定显示设备的度量单位. 通常,视频显示使用的单位是像素:打印机使用的单位是 1/100 英寸.)
- VMware 打开虚拟机的时候提示 internal error 内部错误 遇到这个问题时我的解决方法
任务栏右键,启动任务管理器,选择“服务”选项卡 找到这个服务 启动这个服务后,再次尝试打开虚拟机,就OK了.
- Opencv + opencv_contrib + Tesseract 之Qt开发环境搭建
1.软件包准备 opencv源码包地址: 官网 github opencv_contrib源码包地址: github Tesseract源码包地址: ...
- 删除DataTable的指定行(Lambda)
DataTable dtTcu = GetAllTcuInfoBySdId(sdId); DataTable dtToesm = GetAllToesmBySdId(sdId); foreach (D ...
- struct2depth 记录
把效果图放在前面 03.28 handle_motion False architecture simple joint_encoder False depth_normalization ...
- 易酷 cms2.5 本地文件包含漏洞 getshell
易酷 cms2.5 本地文件包含漏洞 getshell 首先下载源码安装(http://127.0.0.1/test/ekucms2.5/install.php) 安装成功直接进行复现吧 本地包含一 ...