本文通过几个简单例子演示各方法生成、解析XML的过程。
1.Dom4j
用Java代码生成xml文档。
1 package com.example.xml.dom4j; 2 3 import java.io.FileOutputStream; 4 import java.io.FileWriter; 5 6 import org.dom4j.Document; 7 import org.dom4j.DocumentHelper; 8 import org.dom4j.Element; 9 import org.dom4j.io.OutputFormat; 10 import org.dom4j.io.XMLWriter; 11 12 /** 13 * dom4j框架学习 使用dom4j框架创建xml文档并输出保存 14 * 15 */ 16 public class Dom4JTest1 17 { 19 public static void main(String[] args) throws Exception 20 { 21 // 第一种方式:创建文档,并创建根元素 22 // 创建文档:使用了一个Helper类 23 Document document = DocumentHelper.createDocument(); 24 25 // 创建根节点并添加进文档 26 Element root = DocumentHelper.createElement("student"); 27 document.setRootElement(root); 28 29 // 第二种方式:创建文档并设置文档的根元素节点 30 Element root2 = DocumentHelper.createElement("student"); 31 Document document2 = DocumentHelper.createDocument(root2); 32 33 // 添加属性 34 root2.addAttribute("name", "zhangsan"); 35 // 添加子节点:add之后就返回这个元素 36 Element helloElement = root2.addElement("hello"); 37 Element worldElement = root2.addElement("world"); 38 39 helloElement.setText("hello Text"); 40 worldElement.setText("world text"); 41 42 // 输出 43 // 输出到控制台 44 XMLWriter xmlWriter = new XMLWriter(); 45 xmlWriter.write(document); 46 47 // 输出到文件 48 // 格式 49 OutputFormat format = new OutputFormat(" ", true);// 设置缩进为4个空格,并且另起一行为true 50 XMLWriter xmlWriter2 = new XMLWriter( 51 new FileOutputStream("student.xml"), format); 52 xmlWriter2.write(document2); 53 54 // 另一种输出方式,记得要调用flush()方法,否则输出的文件中显示空白 55 XMLWriter xmlWriter3 = new XMLWriter(new FileWriter("student2.xml"), 56 format); 57 xmlWriter3.write(document2); 58 xmlWriter3.flush(); 59 // close()方法也可以 61 } 62 }
读入xml文档并分析
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <students name="zhangsan"> 4 <hello name="lisi">hello Text1</hello> 5 <hello name="lisi2">hello Text2</hello> 6 <hello name="lisi3">hello Text3</hello> 7 <world name="wangwu">world text1</world> 8 <world name="wangwu2">world text2</world> 9 <world >world text3</world> 10 </students>
1 package com.example.xml.dom4j; 2 3 import java.io.File; 4 import java.util.Iterator; 5 import java.util.List; 6 7 import javax.xml.parsers.DocumentBuilder; 8 import javax.xml.parsers.DocumentBuilderFactory; 9 10 import org.dom4j.Document; 11 import org.dom4j.Element; 12 import org.dom4j.io.DOMReader; 13 import org.dom4j.io.SAXReader; 14 15 /** 16 * dom4j框架学习: 读取并解析xml 17 * 18 * 19 */ 20 public class Dom4JTest2 21 { 22 public static void main(String[] args) throws Exception 23 { 24 SAXReader saxReader = new SAXReader(); 25 26 Document document = saxReader.read(new File("students.xml")); 27 28 // 获取根元素 29 Element root = document.getRootElement(); 30 System.out.println("Root: " + root.getName()); 31 32 // 获取所有子元素 33 List<Element> childList = root.elements(); 34 System.out.println("total child count: " + childList.size()); 35 36 // 获取特定名称的子元素 37 List<Element> childList2 = root.elements("hello"); 38 System.out.println("hello child: " + childList2.size()); 39 40 // 获取名字为指定名称的第一个子元素 41 Element firstWorldElement = root.element("world"); 42 // 输出其属性 43 System.out.println("first World Attr: " 44 + firstWorldElement.attribute(0).getName() + "=" 45 + firstWorldElement.attributeValue("name")); 46 47 System.out.println("迭代输出-----------------------"); 48 // 迭代输出 49 for (Iterator iter = root.elementIterator(); iter.hasNext();) 50 { 51 Element e = (Element) iter.next(); 52 System.out.println(e.attributeValue("name")); 53 54 } 55 56 System.out.println("用DOMReader-----------------------"); 57 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 58 DocumentBuilder db = dbf.newDocumentBuilder(); 59 // 注意要用完整类名 60 org.w3c.dom.Document document2 = db.parse(new File("students.xml ")); 61 62 DOMReader domReader = new DOMReader(); 63 64 // 将JAXP的Document转换为dom4j的Document 65 Document document3 = domReader.read(document2); 66 67 Element rootElement = document3.getRootElement(); 68 69 System.out.println("Root: " + rootElement.getName()); 70 71 } 72 73 }
时间: 2024-10-28 15:59:02