创建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. 学习笔记TF062:TensorFlow线性代数编译框架XLA

    XLA(Accelerated Linear Algebra),线性代数领域专用编译器(demain-specific compiler),优化TensorFlow计算.即时(just-in-time ...

  2. 在linxu机器ansible上运行启动django项目命令

    source py3env/bin/activate  进入虚拟环境 cd /xiangmulujing     进入项目路径 然后就可以执行运行命令了 python manage.py runser ...

  3. Java JVM里堆和栈的区别

    参考资料: 1.堆和栈的概念和区别 2.JVM虚拟机

  4. myql 格式化日期

    date_format(a.balance_date,'%Y-%m')= date_format(#{balanceDate},'%Y-%m')

  5. Git使用之(pathspec master did not match any file(s) known to git)

    一 问题概述 今天在工作中遇到一个问题,使用很久的一个local git repository,里面只有develop分支,那么现在想将分支切换到master分支,问题来了,在切换到master分支时 ...

  6. STM32 USB-三个HID-interface 复合(组合)设备的代码实现-基于固件库(原创)

    一.概论: 在STM32_USB-FS-Device_Lib_V4.1.0的Custom_HID工程基础上进行修改: 开发一款设备,有三个HID接口,mouse+pen+自定义HID 其中:0_HID ...

  7. linux远程windows桌面

    rdesktop,例子如下,-f为全屏,-a为颜色设置 rdesktop -f -a 32 192.168.88.235

  8. 工控随笔_10_西门子_WinCC的VBS脚本_01_基础入门

    很多人都认为VB语言或者VBS脚本语言是一种很low的语言,从心里看不起VB或者VBS, 但是其实VBS不仅可以做为系统管理员的利器,同样在工控领域VBS语言大有用武之地. 西门子的WinCC提供了两 ...

  9. C# Xamarin开发 GenyMotion adb List of devices attached

    最近,公司要求要学习Xamarin,说是将来用到PDA上,所以最近对XaMarin开始接触,16年的时候就听说.Net开始着实跨平台,安卓和IOS,但是网上看过很多资料都说Xamarin比较坑,一般的 ...

  10. MySQL-count(*)和count(1)的查询区别

    一般情况下,Select Count (*)和Select Count(1)两着返回结果是一样的 假如表沒有主键(Primary key), 那么count(1)比count(*)快, 如果有主键的話 ...