您的位置:首页 > 其它

解析xml——采用Jdom与dom4J方式读xml文档

2012-10-11 19:52 591 查看
  对于java,现在目前流行解析xml的技术有4种。它们分别是:dom、jdom、dom4j、sax。前3种是基于dom树解析的,后一种是基于事件处理机制的。其中最流行的为jdom与dom4j的解析方式。以下分别是jdom与dom4j方式读xml文档。有什么错误与建议希望大家给我邮件,大家共同进步。

  xml文档如下:

  文档名称:studentInfo.xml

<?xml version="1.0" encoding="UTF-8"?>
<class>
<student no="1001">
<name>张三</name>
<sex>男</sex>
<age>20</age>
<score>
<java>90</java>
<net>85</net>
<html>87</html>
</score>
</student>

<student no="1002">
<name>xi</name>
<sex>男</sex>
<age>20</age>
<score>
<java>78</java>
<net>79</net>
<html>87</html>
</score>
</student>
</class>


一.Jdom方式读xml文档,代码如下:
   使用此方式需要导入:org.jdom.jar这个包

View Code

import java.io.FileInputStream;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;

/**
* 解析xml
* 用jdom读studentInfo.xml中的数据
* @author dell
*
*/
public class ReaderXML {

public static void main(String[] args) {

//1.新建一个解析器
SAXBuilder builder=new SAXBuilder();

Document doc=null;
try {
//2.获取解析的文档
doc=builder.build(new FileInputStream("G:\\javaWeb\\chapter01\\WebRoot\\studentInfo.xml"));

} catch (Exception e) {

e.printStackTrace();
}

//3.获取根节点
Element root=doc.getRootElement();

//4.获取子节点
List<Element> list=root.getChildren();

//5.循环读取数据
System.out.println("学号\t姓名\t性别\t年龄\tjava成绩\t.net成绩\thtml成绩");

for (Element element : list) {

List<Element> score=element.getChildren("score");//获取score节点下的子节点

for (Element s : score) {

System.out.print(element.getAttributeValue("no")+"\t"+element.getChildText("name")+"\t"+element.getChildText("sex")+"\t"+element.getChildText("age")+"\t");
System.out.print(s.getChildText("java")+"\t"+s.getChildText("net")+"\t"+s.getChildText("html")+"\n");
}

}

}
}


二.dom4J方式读xml文档,代码如下:
  使用此方式需要导入:org.dom4j-1.6.1.jar这个包

import java.io.*;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
* 解析xml
* 读取studentInfo.xml中的数据
* 采用dom4j方式解析
* dom4j是jdom一种优化式的封装
* @author dell
*
*/
public class ReaderXML {

public static void main(String[] args) {
//1.创建解析器
SAXReader reader=new SAXReader();

Document doc=null;

try {
//2.得到document对象
doc=reader.read(new File("G:\\javaWeb\\chapter01\\WebRoot\\studentInfo.xml"));

} catch (Exception e) {

e.printStackTrace();
}
//3.得到根节点
Element root=doc.getRootElement();

//4.得到子节点
List<Element> list=root.elements();

//5.取值
System.out.println("学号\t姓名\t性别\t年龄\tjava成绩\t.net成绩\thtml成绩");

for (Element element : list) {

List<Element> score=element.elements("score");//得到score下的子节点

for (Element s : score) {

System.out.print(element.attributeValue("no")+"\t"+element.elementText("name")+"\t"+element.elementText("sex")+"\t"+element.elementText("age")+"\t");

System.out.print(s.elementText("java")+"\t"+s.elementText("net")+"\t"+s.elementText("html")+"\n");
}
}

}
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: