java解析xml文件(三种方式-(dom ,jdom ,dom4j)

kenvie 2013-02-01

test.xml文件

Xml代码

<?xmlversion="1.0"encoding="UTF-8"?>

<HD>

<diskname="C">

<capacity>8G</capacity>

<directories>200</directories>

<files>1580</files>

</disk>

<diskname="D">

<capacity>10G</capacity>

<directories>500</directories>

<files>3000</files>

</disk>

</HD>

第一种,利用dom方式解析xml文件,无需jar包

Java代码

packageDom;

importjavax.xml.parsers.DocumentBuilder;

importjavax.xml.parsers.DocumentBuilderFactory;

importorg.w3c.dom.Document;

importorg.w3c.dom.Element;

importorg.w3c.dom.NodeList;

publicclassDomXML{

publicstaticvoidmain(String[]args)throwsException{

//得到DOM解析器的工厂实例

DocumentBuilderFactorydbFactory=DocumentBuilderFactory.newInstance();

//从DOM工厂中获得DOM解析器

DocumentBuilderdbBuilder=dbFactory.newDocumentBuilder();

//声明为File为了识别中文名

Documentdoc=null;

doc=dbBuilder.parse("F:/work_sapce_petroskill/Spring/src/Dom/test.xml");

//得到文档名称为Student的元素的节点列表

NodeListlist=doc.getElementsByTagName("disk");

//遍历该集合,显示结合中的元素及其子元素的名字

for(inti=0;i<list.getLength();i++){

Elementelement=(Element)list.item(i);

Stringname=element.getAttribute("name");

Stringcapacity=element.getElementsByTagName("capacity").item(0).getFirstChild().getNodeValue();

Stringdirectories=element.getElementsByTagName("directories").item(0).getFirstChild().getNodeValue();

Stringfiles=element.getElementsByTagName("files").item(0).getFirstChild().getNodeValue();

System.out.println("磁盘信息:");

System.out.println("分区盘符:"+name);

System.out.println("分区容量:"+capacity);

System.out.println("目录数:"+directories);

System.out.println("文件数:"+files);

System.out.println("-----------------------------------");

}

}

}

输出结果为:

Xml代码

磁盘信息:

分区盘符:C

分区容量:8G

目录数:200

文件数:1580

-----------------------------------

磁盘信息:

分区盘符:D

分区容量:10G

目录数:500

文件数:3000

-----------------------------------

第二种,利用Jdom方式解析xml文件,需要下载jdom.jar(见附件)

Java代码

packageDom;

importjava.util.List;

importorg.jdom.Document;

importorg.jdom.Element;

importorg.jdom.input.SAXBuilder;

publicclassJDomXML{

publicstaticvoidmain(String[]args)throwsException{

SAXBuildersb=newSAXBuilder();

Documentdoc=sb.build(Dom4jXML.class.getClassLoader().getResourceAsStream("Dom/test.xml"));//构造文档对象

Elementroot=doc.getRootElement();//获取根元素

Listlist=root.getChildren("disk");//取名字为disk的所有元素

for(inti=0;i<list.size();i++){

Elementelement=(Element)list.get(i);

Stringname=element.getAttributeValue("name");

Stringcapacity=element.getChildText("capacity");//取disk子元素capacity的内容

Stringdirectories=element.getChildText("directories");

Stringfiles=element.getChildText("files");

System.out.println("磁盘信息:");

System.out.println("分区盘符:"+name);

System.out.println("分区容量:"+capacity);

System.out.println("目录数:"+directories);

System.out.println("文件数:"+files);

System.out.println("-----------------------------------");

}

}

}

输出结果为:

Xml代码

磁盘信息:

分区盘符:C

分区容量:8G

目录数:200

文件数:1580

-----------------------------------

磁盘信息:

分区盘符:D

分区容量:10G

目录数:500

文件数:3000

-----------------------------------

第三种,利用dom4j方式解析xml文件,需要下载dom4j-1.6.1.jar(见附件)

Java代码

packageDom;

importjava.util.Iterator;

importorg.dom4j.Document;

importorg.dom4j.Element;

importorg.dom4j.io.SAXReader;

publicclassDom4jXML{

publicstaticvoidmain(String[]args)throwsException{

//创建文件对象

java.io.Filefile=newjava.io.File("F:/workSapce/javaXML/src/Dom/test.xml");

//创建一个读取XML文件的对象

SAXReaderreader=newSAXReader();

//创建一个文档对象

Documentdocument=reader.read(file);

//获取文件的根节点

Elementelement=document.getRootElement();

for(Iteratori=element.elementIterator("disk");i.hasNext();){

//获取节点元素

element=(Element)i.next();

Stringname=element.attributeValue("name");

Stringcapacity=element.elementText("capacity");//取disk子元素capacity的内容

Stringdirectories=element.elementText("directories");

Stringfiles=element.elementText("files");

System.out.println("磁盘信息:");

System.out.println("分区盘符:"+name);

System.out.println("分区容量:"+capacity);

System.out.println("目录数:"+directories);

System.out.println("文件数:"+files);

System.out.println("-----------------------------------");

}

}

}

输出结果为:

Xml代码

磁盘信息:

分区盘符:C

分区容量:8G

目录数:200

文件数:1580

-----------------------------------

磁盘信息:

分区盘符:D

分区容量:10G

目录数:500

文件数:3000

-----------------------------------

总结:DOM4J性能最好

小文档情况下还值得考虑使用DOM和JDOM

jdom.jar(149.2KB)

下载次数:33

dom4j-1.6.1.jar(306.5KB)

下载次数:38

相关推荐