xml解析-dom4j范例
来源:互联网 发布:c语言面向的是计算机 编辑:程序博客网 时间:2024/05/21 16:59
dom4j是一个第三方xml解析库,所以要在工程中加引用库。
下载了dom4j项目之后,解压缩,将其目录下面jar包加入class path下面。
(Properties->Java Build Path -> Add External JARs…)加入工程就可以使用了。
这里分两个例程,一个创建xml文档,一个读取xml文档并解析
创建xml文档并添加节点数据
package dom4j;import java.io.FileOutputStream;import java.io.IOException;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;public class Dom4jDemo { public Dom4jDemo() { // TODO Auto-generated constructor stub } /** * 创建xml文档,并添加元素。 * * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // 第一种方式:创建文档节点 Document document = DocumentHelper.createDocument(); // 创建根节点,并添加到文档节点中 Element element = DocumentHelper.createElement("student"); document.setRootElement(element); XMLWriter writer = new XMLWriter(); writer.write(document);//可以直接把document节点下所有数据打印出来 // 第二种方式,先创建文档根节点,然后创建文档节点。并将根节点引用作为参数 Element element2 = DocumentHelper.createElement("students");// 头节点students Document document1 = DocumentHelper.createDocument(element2); Element student1 = element2.addElement("student");// 头节点创建子节点 student1.addAttribute("name", "vincent");// 子节点属性 Element birthday = student1.addElement("birthday");// 子节点的子节点 birthday.setText("1993-01-21"); Element school = student1.addElement("school"); school.setText("GDUT"); writer.write(document1);// 输出到终端 // 输出到文件,格式化输出,第一个参数表示子节点和父节点要缩进多少个空格 //第二个参数表示节点间是否要另起一行。每个新的节点都是独自一行 OutputFormat format = new OutputFormat(" ", true); writer = new XMLWriter(new FileOutputStream("src/student.xml"), format); Element student2 = element2.addElement("student"); student2.addAttribute("name", "ok"); Element student2_birthday = student2.addElement("birthday"); student2_birthday.setText("1232-3-12"); Element student2_school = student2.addElement("school"); student2_school.setText("GDUT"); writer.write(document1); writer.flush(); writer.close(); }}
输出的结果是
<?xml version="1.0" encoding="UTF-8"?><students> <student name="vincent"> <birthday>1993-01-21</birthday> <school>GDUT</school> </student> <student name="ok"> <birthday>1232-3-12</birthday> <school>GDUT</school> </student></students>
解析生成的这个xml文档
package dom4j;import java.io.File;import java.util.Iterator;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class ParseDom4j { public ParseDom4j() { // TODO Auto-generated constructor stub } public static void main(String[] args) throws DocumentException { //saxreader是通过sax事件获取(构造)dom4j树 SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File("src/student.xml")); System.out.println("Docment Node Name " + document.getName()); Element root = document.getRootElement(); System.out.println("Root Name" + root.getName()); List<Element> elements = root.elements();// 获取根元素下的所有子节点 System.out.println("根元素下的所有子节点数" + elements.size()); List<Element> students = root.elements("student");// 获取根元素下的所有student子节点 System.out.println("根元素下的所有student节点数" + students.size()); for (Iterator iterator = students.iterator(); iterator.hasNext();) { Element element = (Element) iterator.next(); System.out.println(element.attributeValue("name")); List<Element> childNode = element.elements(); for (Iterator iterator2 = childNode.iterator(); iterator2.hasNext();) { Element childElement = (Element) iterator2.next(); System.out.println(childElement.getName() + "\t\t" + childElement.getText()); } } }}
输出
Docment Node Name file:///home/cindy/eclipseworkspace/XMLParseSax/src/student.xml
Root Names tudents
根元素下的所有子节点数2
根元素下的所有student节点数2
vincent
birthday 1993-01-21
school GDUT
ok
birthday 1232-3-12
school GDUT
0 0
- xml解析-dom4j范例
- 使用DOM4J解析XML String范例
- XML 的 Dom4j 解析范例,以及 XPath
- xml解析-dom范例
- xml解析-sax范例
- 用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
- Okhttp使用简析——Android网络请求框架(一)
- 用isNaN函数判断是否是Number中的坑
- nginx日志切割
- 【Web前端 - AngularJs】$location.path改变路径需要点击两次后才会跳转
- QT编程--监听USB设备拔出和插入。
- xml解析-dom4j范例
- ASCII、Unicode、GBK和UTF-8字符编码的区别联系
- 【安装】myEclipse
- Django、MySQL开发WEB项目防止中文乱码的有效方法
- linux lsof详解
- jenkins+git+maven+centos7自动化构建部署项目(二)
- 单机使用Docker host网络安装consul和registrator
- [JZOJ4566]reimu hakurei
- 触摸事件的传递机制和与Touch相结合的实践学习