解析xml——采用Jdom与dom4J方式读xml文档
对于java,现在目前流行解析xml的技术有4种。它们分别是:dom、jdom、dom4j、sax。前3种是基于dom树解析的,后一种是基于事件处理机制的。其中最流行的为jdom与dom4j的解析方式。以下分别是jdom与dom4j方式读xml文档。有什么错误与建议希望大家给我邮件,大家共同进步。
xml文档如下:
文档名称:studentInfo.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <class> 3 <student no="1001"> 4 <name>张三</name> 5 <sex>男</sex> 6 <age>20</age> 7 <score> 8 <java>90</java> 9 <net>85</net> 10 <html>87</html> 11 </score> 12 </student> 13 14 <student no="1002"> 15 <name>xi</name> 16 <sex>男</sex> 17 <age>20</age> 18 <score> 19 <java>78</java> 20 <net>79</net> 21 <html>87</html> 22 </score> 23 </student> 24 </class>
一.Jdom方式读xml文档,代码如下:
使用此方式需要导入:org.jdom.jar这个包
View Code
1 import java.io.FileInputStream; 2 import java.util.List; 3 import org.jdom.Document; 4 import org.jdom.Element; 5 import org.jdom.input.SAXBuilder; 6 7 /** 8 * 解析xml 9 * 用jdom读studentInfo.xml中的数据 10 * @author dell 11 * 12 */ 13 public class ReaderXML { 14 15 public static void main(String[] args) { 16 17 //1.新建一个解析器 18 SAXBuilder builder=new SAXBuilder(); 19 20 21 Document doc=null; 22 try { 23 //2.获取解析的文档 24 doc=builder.build(new FileInputStream("G:\\javaWeb\\chapter01\\WebRoot\\studentInfo.xml")); 25 26 } catch (Exception e) { 27 28 e.printStackTrace(); 29 } 30 31 //3.获取根节点 32 Element root=doc.getRootElement(); 33 34 //4.获取子节点 35 List<Element> list=root.getChildren(); 36 37 //5.循环读取数据 38 System.out.println("学号\t姓名\t性别\t年龄\tjava成绩\t.net成绩\thtml成绩"); 39 40 for (Element element : list) { 41 42 List<Element> score=element.getChildren("score");//获取score节点下的子节点 43 44 for (Element s : score) { 45 46 System.out.print(element.getAttributeValue("no")+"\t"+element.getChildText("name")+"\t"+element.getChildText("sex")+"\t"+element.getChildText("age")+"\t"); 47 System.out.print(s.getChildText("java")+"\t"+s.getChildText("net")+"\t"+s.getChildText("html")+"\n"); 48 } 49 50 } 51 52 } 53 }
二.dom4J方式读xml文档,代码如下:
使用此方式需要导入:org.dom4j-1.6.1.jar这个包
1 import java.io.*; 2 import java.util.List; 3 4 import org.dom4j.Document; 5 import org.dom4j.Element; 6 import org.dom4j.io.SAXReader; 7 8 /** 9 * 解析xml 10 * 读取studentInfo.xml中的数据 11 * 采用dom4j方式解析 12 * dom4j是jdom一种优化式的封装 13 * @author dell 14 * 15 */ 16 public class ReaderXML { 17 18 public static void main(String[] args) { 19 //1.创建解析器 20 SAXReader reader=new SAXReader(); 21 22 23 Document doc=null; 24 25 try { 26 //2.得到document对象 27 doc=reader.read(new File("G:\\javaWeb\\chapter01\\WebRoot\\studentInfo.xml")); 28 29 } catch (Exception e) { 30 31 e.printStackTrace(); 32 } 33 //3.得到根节点 34 Element root=doc.getRootElement(); 35 36 //4.得到子节点 37 List<Element> list=root.elements(); 38 39 //5.取值 40 System.out.println("学号\t姓名\t性别\t年龄\tjava成绩\t.net成绩\thtml成绩"); 41 42 for (Element element : list) { 43 44 List<Element> score=element.elements("score");//得到score下的子节点 45 46 for (Element s : score) { 47 48 System.out.print(element.attributeValue("no")+"\t"+element.elementText("name")+"\t"+element.elementText("sex")+"\t"+element.elementText("age")+"\t"); 49 50 System.out.print(s.elementText("java")+"\t"+s.elementText("net")+"\t"+s.elementText("html")+"\n"); 51 } 52 } 53 54 } 55 }