Dom4j解析XML
package com.to.go.dom4jparse; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class Dom4jClass { /** * 遍历 递归 */ public static void it(Element r) { //获取 传入的节点对象的属性 List<Attribute> attributes = r.attributes(); for (Attribute att : attributes) { //遍历属性 System.out.println(att.getName()+"==>"+att.getStringValue()); } //遍历 传入节点 的 文本节点 String textTrim = r.getTextTrim(); if(textTrim.length() > 0 ) { System.out.println(r.getName() + "----->" + textTrim); } //传入 的是 根节点 根节点 如果 没有属性 和 文本 节点 以上就不输出 //在一次 获取根节点 的子元素 对子元素进行递归遍历 重复执行上面方法进行 属性和文本节点输出 List<Element> elements = r.elements(); for (Element e : elements) { //递归 it(e); } } public static void main(String[] args) throws DocumentException, IOException { //1 创建SAXReader SAXReader reader = new SAXReader(); Document doc = reader.read("src\\main\\java\\com\\to\\go\\dom4jparse\\student.xml"); //2.获取根元素 Element root = doc.getRootElement(); //调用 递归遍历xml 文档 it(root); } /** * 遍历整个XML文档元素 * @param args * @throws DocumentException * @throws IOException */ public static void main3(String[] args) throws DocumentException, IOException { //1 创建SAXReader SAXReader reader = new SAXReader(); Document doc = reader.read("src\\main\\java\\com\\to\\go\\dom4jparse\\student.xml"); //2.获取根元素 Element root = doc.getRootElement(); // 遍历根的子元素 for (Iterator<Element> it = root.elementIterator(); it.hasNext();) { Element element = it.next(); System.out.println(element.asXML()); } System.out.println("-----------------------------"); // 遍历 兴奋剂 的子元素 for (Iterator<Element> it = root.elementIterator("兴奋剂"); it.hasNext();) { Element foo = it.next(); System.out.println(foo.asXML()); } } /** * 添加元素 * @param args * @throws DocumentException * @throws IOException */ public static void main2(String[] args) throws DocumentException, IOException { //1 创建SAXReader SAXReader reader = new SAXReader(); Document doc = reader.read("src\\main\\java\\com\\to\\go\\dom4jparse\\student.xml"); //2.获取根元素 Element r = doc.getRootElement(); //3.向根节点下注入 新节点 Element xfj = r.addElement("兴奋剂").addAttribute("xfj", "xfj_001"); //添加元素和 文本节点 xfj.addElement("name").setText("咖啡因类"); xfj.addElement("price").setText("100$"); xfj.addElement("number").setText("9527"); //格式化输出到XML文件中 OutputFormat f = OutputFormat.createPrettyPrint(); //字符输出流包装 文件输出流 OutputStreamWriter wr = new OutputStreamWriter( new FileOutputStream(//指定文件编码 utf8 "src\\main\\java\\com\\to\\go\\dom4jparse\\student.xml"),"Utf8"); //创建一个XMl字符输出流对象 XMLWriter xml = new XMLWriter(wr,f); //开始写 xml.write(doc); //关流 wr.close(); xml.close(); } /** * 获取所有指定标签的内容 * @param args * @throws DocumentException */ public static void main1(String[] args) throws DocumentException { //1 创建SAXReader SAXReader reader = new SAXReader(); Document doc = reader.read("src\\main\\java\\com\\to\\go\\dom4jparse\\student.xml"); //2.获取根元素 Element r = doc.getRootElement(); //3.根据 名称获取根元素下指定 标签 student 的元素集合 List<Element> sList = r.elements("student"); //4.遍历每一个子元素 for (Element e : sList) { //获取指定 元素 的文本 值 //String elementName = e.elementText("name"); //获取 name元素的 文本值 System.out.println(e.elementText("name")); System.out.println(e.elementText("age")); //获取属性的值 System.out.println(e.attributeValue("number")); System.out.println("--------------------------"); } } }
传播知识,分享快乐!
作者:IT_BULL
出处:http://www.cnblogs.com/itBulls/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
博客园-博客园。