使用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: ...
随机推荐
- git 创建删除分支
进入仓库目录 -- 查看本地分支 git branch -- 查看远程分支 git branch -r -- 查看远程和本地的分支 git branch -a -- 下载远程分支代码,并切换到分支 进 ...
- MySQL 读写分离(转载)
原文地址:https://blog.csdn.net/justdb/article/details/17331569
- Docker构建FastDFS镜像
https://blog.csdn.net/qq_26440803/article/details/83066132 Dockerfile 所需依赖: fastdfs libfastcommon ...
- [转]Java调用Javascript、Python算法总结
最近项目中经常需要将Javascript或者Python中的算法发布为服务,而发布Tomcat服务则需要在Java中调用这些算法,因此就不免要进行跨语言调用,即在Java程序中调用这些算法. 不管是调 ...
- python实现将字符串中以大写字母开头的单词前面添加“_”下划线
在工作中写测试用例代码生成的时候,函数命令考虑采用参数文件的名称来命名,但是发现文件命名是驼峰的写写法,所以想按照字符串中的大写字母做分割,每个单词前面添加下划线,主要考虑采用正则的模式来匹配,替换然 ...
- Verilog手绘FVH信号
Verilog手绘FVH信号 `timescale 1ns / 1ps //////////////////////////////////////////////////////////////// ...
- H3C交换机IRF典型配置举例LACP MAD检测方式
一.组网需求 由于公司人员激增,接入层交换机提供的端口数目已经不能满足PC的接入需求.现需要在保护现有投资的基础上扩展端口接入数量,并要求网络易管理.易维护. 二.组网图 三.配置思路 Device ...
- Java Web开发Session超时设置
在Java Web开发中,Session为我们提供了很多方便,Session是由浏览器和服务器之间维护的.Session超时理解为:浏览器和服务器之间创建了一个Session,由于客户端长时间(休眠时 ...
- 用EM4305/T5557模拟EM4100的ID卡,原理解释
用EM4305/T5557模拟EM4100,原理解释 来源: https://www.cnblogs.com/osnosn/p/10593297.html 来自osnosn的博客 写于: 2019-0 ...
- SX_WIN10X64LTSB2016_EN_LITE英文精简版
SX_WIN10X64LTSB2016_EN_LITE英文精简版该版本为英文版!该版本为英文版!该版本为英文版!因为论坛巴基斯坦的maanu兄弟PM我,所以抽空做了一个.介绍沿用原来的,中文用谷歌翻译 ...