博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Dom4j对XML文档创建与解析
阅读量:5118 次
发布时间:2019-06-13

本文共 5148 字,大约阅读时间需要 17 分钟。

创建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     * 
*
* *
AC00003900021456305194844
*
0002
*
AC000039
*
bc0TYXab4UjcZiOtX9XpdQ
* * * …… * *
*/ 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();    }}

 

转载于:https://www.cnblogs.com/lazyli/p/10781658.html

你可能感兴趣的文章
Ubuntu下的eclipse安装subclipse遇到没有javahl的问题...(2天解决了)
查看>>
alter database databasename set single_user with rollback IMMEDIATE 不成功问题
查看>>
WCF揭秘——使用AJAX+WCF服务进行页面开发
查看>>
【题解】青蛙的约会
查看>>
IO流
查看>>
mybatis调用存储过程,获取返回的游标
查看>>
设计模式之装饰模式(结构型)
查看>>
面向对象的设计原则
查看>>
Swift3.0服务端开发(三) Mustache页面模板与日志记录
查看>>
【转】 FPGA设计的四种常用思想与技巧
查看>>
EntityFrameWork 实现实体类和DBContext分离在不同类库
查看>>
新手算法学习之路----二叉树(在一个二叉查找树中插入一个节点)
查看>>
autopep8
查看>>
GIT在Linux上的安装和使用简介
查看>>
基于C#编程语言的Mysql常用操作
查看>>
s3c2440实验---定时器
查看>>
MyEclipse10安装SVN插件
查看>>
[转]: 视图和表的区别和联系
查看>>
Regular Experssion
查看>>
图论例题1——NOIP2015信息传递
查看>>