dom4j解析xml
来源:互联网 发布:.net core 2.0 知乎 编辑:程序博客网 时间:2024/05/29 04:38
使用dom4j解析xml,一般实际开发中的主流
1)dom4j简介
dom4j,是一个组织,针对xml解析,提供解析器 dom4j,为什么说它是主流!其实在以前dom4j只是sum公司的一个部门,后来独立出来提供了dom4j,它结合很多jaxp的优点。dom4j不是javase的一部分,所以我们要使用它的时候必须要先导入dom4j的包。晚点跟xpath包和手册一起上传给大家,上传给大家下载
2)如何导入包操作
首先创建一个文件夹 lib,然后将包复制到该文件夹之下, 在jar包上右键选择->build path->Configure Build Path
结果:如果你看到一个小奶瓶的话表示导入成功,看截图
3)如何使用dom4j
这里介绍一个方法:我上传的文件中,包含了dom4j的文档说明。到底怎么查看?截图
4)一些函数:
//得到document,【注意】document的父接口是Node,如果在document里面找不到想要的方法,到Node里面去找 SAXReader reader = new SAXReader(); Document document = reader.read(url);// document里面的方法 , 获取根节点 返回的是Element,一般从根节点往下操作 getRootElement() //Element也是一个接口,父接口是Node,Element和Node里面方法 //获取父节点 getParent(); //添加标签,一般是父标签添加 addElement(); //表示获取标签下面的第一个子标签qname:标签的名称 element(qname); //获取标签下面是这个名称的所有子标签(一层)qname:标签名称 elements(qname); //获取标签下面的所有一层子标签 elements();
5)上代码案例
xml
//man.xml 路径:src/man.xml<?xml version="1.0" encoding="UTF-8"?><preson> <p1> <name id1="xiaozheng">zhangsan</name> <age>100</age> </p1> <p1> <name>lisi</name> <age>20</age> </p1> </preson>
查询所有name元素里面的值
//name在一定在根节点之下,那么前三步固定,独立出来,得到根节点SAXReader saxReader = new SAXReader(); //创建解析器Document document = saxReader.read("src/man.xml"); //得到docElement root = document.getRootElement(); //得到根节点
//获得到跟节点下面的所有p1List<Element> list = root.elements("p1"); //遍历,找到name并且输出 for (Element element : list) { Element name = element.element("name"); //p1下面寻找name String s = name.getText(); //得到name值 System.out.println(s); //打印 } //说到底就是里面element()等三个函数,层层递进,去找所需要的标签
得到第二个name
//前三部参考上面得到根节点。 List<Element> list = root.elements("p1"); Element p2 = list.get(1); Element name = p2.element("name"); String s = name.getText(); System.out.println("第二个名字"+s);
增加:在第一个p1标签末尾添加一个元素 nv
//需求:p1添加,节点,也是就找到p1调用addElement();即可 Element p1 = root.element("p1"); Element sex1 = p1.addElement("sex"); sex1.setText("nv"); //回写操作,原因跟前面一样,单独分离出来写,后面多次用到
回写操作:四步,不懂看jaxp那篇,为什么要回写
OutputFormat format = OutputFormat.createPrettyPrint(); //可以有缩进的效果XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/man.xml"), format);xmlWriter.write(document);xmlWriter.close();
增加:在第一个p1下面的age标签之前添加 < school>ecit.edu.cn< /schlool>
//需求:在某个标签之前添加,如果说,利用之前的找到age后添加就成了<age> <school></school></age>不符合要求 //前三步还是一样 Element p1 = root.element("p1"); List<Element> list = p1.elements(); Element school = DocumentHelper.createElement("school"); school.setText("ecit.edu.cn"); list.add(1,school);
修改:修改第一个p1下面的age元素的值 30
//前三步骤一样 Element p1 = root.element("p1"); Element age = p1.element("age"); age.setText("100"); //回写操作
删除:删除第一个p1下面的ecit元素
//前三步骤一样 Element p1 = root.element("p1"); Element school = p1.element("school"); p1.remove(school); //回写操作
属性获取:获取第一个p1里面的属性id1的值
//前三步骤一样的 Element p1 = root.element("p1"); Element name = p1.element("name"); String value = name.attributeValue("id1"); System.out.println(value);
到此为止,已经把dom4j的增删改查全部讲完了,其实dom4j的操作非常简单,只要记住获取节点的element()方法,灵活变化就可以了。这里有个特别注意的一点是导类,一定要导入dom4j里面的document,node类,否则出错。看图
0 0
- 用DOM4J解析XML
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- 解析xml之--DOM4J
- dom4j解析XML
- 使用 dom4j 解析 XML
- xml文件解析-DOM4J
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- dom4j解析xml方法
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- 使用 dom4j 解析 XML
- IPAddress类的使用方法(C#---网络编程)
- nginx+apache架构配置https适应ATS
- CentOS下mariradb配置
- Gulp与Node.js:剖析最豪的软件项目build系统
- DZ验证码不显示等
- dom4j解析xml
- 20161214C语言基础12_循环
- Android笔记:Android中使EditText失去焦点,edittext禁止弹出键盘
- Windows 10 安装 Oracle 10g
- Codeforces Round #367 (Div. 2) C. Hard problem(简单DP)
- C++11 强类型enum
- 2016.12.14重学C语言记录篇--2
- Unity性能优化之CPU篇
- 数据持久化__归档