创建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文档创建与解析的更多相关文章

  1. dom4j读写XML文档

    dom4j 最常用最简单的用法(转) 要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:http:/ ...

  2. 使用DOM4J生成XML文档

    package xml; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; imp ...

  3. 【XML】利用Dom4j读取XML文档以及写入XML文档

    Dom4j简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能 ...

  4. 2.2 使用 JAXP 对XML文档进行SAX解析

    使用JAXP 对 XML文档进行 SAX解析: public class Demo1 { /** * 使用JAXP对XML文档进行SAX解析 * @throws Exception * @throws ...

  5. 2.1 使用JAXP 对 xml文档进行DOM解析

    //使用 jaxp 对xml文档进行dom解析 public class Demo2 { //必要步骤 @Test public void test() throws Exception { //1. ...

  6. dom4j操作xml文档

    java Dom4j解析XML文件 标签(空格分隔):java进阶 xml文档: <?xml version="1.0" encoding="UTF-8" ...

  7. Dom4j修改xml文档引入

    前面介绍了如何解析xnl文档的内容,这里对修改xml展开讨论. 一.首先看一下,写出内容到xml文档的主要代码: XMLWriter writer = new XMLWriter(OutputStre ...

  8. Dom4j修改xml文档

    1. 写出内容到xml文档 XMLWriter writer = new XMLWriter(OutputStream, OutputForamt) wirter.write(Document); 2 ...

  9. 使用JAXP对xml文档进行DOM解析基础

    XML解析方式分为两种:dom和sax         dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式.       sax: ...

随机推荐

  1. 最新版SEMCMS_PHP_3.5 过滤不严导致sql注入

    一.漏洞分析 在分析过程中看到网上已经有人发现semcms V2.4存在过滤不严导致sql注入的漏洞,不知道咋还没改,而且最新版过滤的关键字更少了. 首先查看首页文件index.php的代码 < ...

  2. python中自定义的栈

    # 栈 先进后出 例如蒸笼,弹夹,饭菜等 class StackFullException(Exception): """自定义一个栈溢出异常""&q ...

  3. LeetCode - Implement Magic Dictionary

    Implement a magic directory with buildDict, and search methods. For the method buildDict, you'll be ...

  4. Scrapy 代理IP

    Scrapy 代理IP 一.Scarpy使用代理IP 1.在setting.py 配置 代理服务器IP 2.在middlermares.py 配置 downloadmiddlermare(下载中间件) ...

  5. 使用Visual Studio 2017 C++17模块(module)特性

    环境: win7_x64旗舰版.VS2017企业版 一.安装VS2017 1.1 安装VS2017时,必须要勾选“使用C++的modules开发”选项 1.2 安装成功后,会在VS安装目录Micros ...

  6. mysql 8.0 主从复制的优化

    mysql 8.0复制改进一简介: 基于GTID下的并行复制,本文不考虑MGR架构二 主要特性   1 基于writeset的下的改进型并行复制     我在之前的一篇文章关于并行复制中详细的介绍了关 ...

  7. C#后台接java接口传输字节数组(byte[])

    事情是这样的C#t代码之前接的WCF接口,后来那边统一改为java的接口,我是用的HttpClient从后台发请求调用的java接口,其他接口都很顺利,是的....知道遇到一个需要传byte[]类型数 ...

  8. 解决WCF“接收对 http://xxx.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致"

    最近在工作中新加了一个接口,本地调试的时候,直接抛出“接收对 http://xxx.svc 的 HTTP 响应时发生错误.这可能是由于服务终结点绑定未使用 HTTP 协议造成的.这还可能是由于服务器中 ...

  9. Flume概念与原理、与Kafka优势对比《转》

    https://blog.csdn.net/gyshun/article/details/79710534

  10. memcached—Java操作Memcached实例

    前面博客介绍了如何在Windows操作系统中安装Memcached,总结一下如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; imp ...