Java解析XML之dom4j方式
来源:互联网 发布:校园网网络设计方案 编辑:程序博客网 时间:2024/05/02 13:13
DOM4J是dom4j.org出品的一个开源XML解析包。Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。
需要的jar包:dom4j-1.6.1.jar、jaxen-1.1-beta-6.jar。
示例:
default.xml
采用dom4j的方式读取xml文件,不能越层访问,而与xpath配合使用就可以很方便的越层访问。
简单示例:
xpath.xml
需要的jar包:dom4j-1.6.1.jar、jaxen-1.1-beta-6.jar。
示例:
default.xml
<?xml version="1.0" encoding="UTF-8"?><groups><stu id="001"><name>zero001</name><email>123@161.com</email></stu><stu id="002"><name>zero002</name><email>123@162.com</email></stu></groups>Dom4jRead.java
import java.io.File;import java.util.Iterator;import java.util.List;import org.dom4j.*;import org.dom4j.io.SAXReader;public class Dom4jRead {public static void main(String[] args) throws DocumentException {SAXReader reader = new SAXReader();Document document = reader.read(new File("default.xml"));Element rootElement = document.getRootElement();// 根节点System.out.println("根节点: " + rootElement.getName());// 枚举所有子节点for (Iterator it = rootElement.elementIterator(); it.hasNext();) {Element element = (Element) it.next();System.out.println(element.getName());}// 枚举名称为xxx的节点的子节点for (Iterator it = rootElement.element("stu").elementIterator(); it.hasNext();) {Element element = (Element) it.next();System.out.print(element.getName() + ": ");System.out.println(element.getText());System.out.println(element.getStringValue());}// 枚举属性for (Iterator it = rootElement.element("stu").attributeIterator(); it.hasNext();) {Attribute attribute = (Attribute) it.next();System.out.println(attribute.getName() + "=" + attribute.getValue());}// rootElement.element("stu"), 取第一个stu// List list = rootElement.elements("stu"); 取所有stu}}Dom4jWrite.java
import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import org.dom4j.*;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;public class Dom4jWrite {public static void main(String[] args) {Document document = DocumentHelper.createDocument();Element root = document.addElement("groups");Element stuElement = root.addElement("stu");Element nameElement = stuElement.addElement("name");Element ageElement = stuElement.addElement("age");nameElement.addAttribute("id", "1").setText("萧");ageElement.setText("18");Element stu = DocumentHelper.createElement("stu");stu.add(DocumentHelper.createElement("name"));stu.add(DocumentHelper.createElement("age"));document.getRootElement().add(stu);// 删除// stu.getParent().remove(stu);try {// FileWriter out = new FileWriter("my.xml");// document.write(out);// out.flush();// out.close();// 格式美化OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("UTF-8");// XMLWriter writer = new XMLWriter(new FileWriter("out.xml"),// format);XMLWriter writer = new XMLWriter(new FileOutputStream("out.xml"),format);writer.write(document);writer.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}运行结果:out.xml
<?xml version="1.0" encoding="UTF-8"?><groups> <stu> <name id="1">萧</name> <age>18</age> </stu> <stu> <name/> <age/> </stu></groups>
采用dom4j的方式读取xml文件,不能越层访问,而与xpath配合使用就可以很方便的越层访问。
简单示例:
xpath.xml
<?xml version="1.0" encoding="UTF-8"?><AAA><BBB id="b1"><CCC><DDD>d</DDD></CCC></BBB><BBB id="b2" /><BBB><DDD>d</DDD></BBB><BBB name="bbb" /></AAA>Dom4jXpath.xml
import java.io.File;import java.util.List;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class Dom4jXpath {// dom4j 配合 xpathpublic static void main(String[] args) throws Exception {// TODO Auto-generated method stubSAXReader reader = new SAXReader();Document document = reader.read(new File("xpath.xml"));List eList = document.selectNodes("/AAA");System.out.println(eList.size());// 1eList = document.selectNodes("/AAA/BBB");System.out.println(eList.size());// 4eList = document.selectNodes("/AAA/CCC");System.out.println(eList.size());// 0eList = document.selectNodes("//DDD");// 不管层级关系,直接取得DDD节点System.out.println(eList.size());// 2// document.selectNodes("/AAA/BBB/*"); AAA/BBB/下的所有节点// document.selectNodes("/*/*/CCC"); 有两个父节点的CCC节点// /AAA/BBB[1],/AAA/BBB[last()]}}
0 0
- JAVA 解析XML之JDOM、DOM4J方式
- Java解析XML之dom4j方式
- Java之DOM4J方式解析XML文件(学习笔记)
- Java DOM4J 方式解析XML文件
- xml解析-dom4j方式
- Java之xml文件解析四(DOM4J方式解析xml文件)
- Java 解析 XML 文件之 DOM4J 解析
- Java解析XML文件的四种方式之DOM4J解析
- (补)Java解析XML之dom4j
- Java解析XML之导入dom4j
- 解析XML文档方式之四:dom4j方式
- xml之DOM方式解析,DOM4J工具解析原理
- java的xml学习[DOM4J方式解析XML文档]
- XML学习06-Java中Dom4J方式解析XML文件
- java解析xml四种方式(3)-dom4j方式
- JAVA解析XML文件(四)---DOM4J方式解析
- 解析xml之--DOM4J
- XML解析之DOM4J
- ecplise之R文件无法生成
- nefu488餐巾计划问题【网络流24题】最小费用流
- POJ 2407 Relatives && UVA 10299 Relatives(欧拉函数)
- Java与C语言的不同
- mysql导出数据库的结构
- Java解析XML之dom4j方式
- POJ——1323 Game Prediction
- 基于TCP/IP协议的网络攻击
- 坚持不到一周
- Spring第一餐
- 测试用例练习之航班预订登录界面———测试要点3.0版
- 文章推荐集合页推荐学习Python Django 开发机开发人参考
- java获取路径的各种方法
- noip2007 奖学金 (排序)