您的位置:首页 > 编程语言 > Java开发

JAVA 应用 DOM4J 及 JDOM 方式解析 XML

2016-05-17 22:44 357 查看

DOM4J方式

DOM4J及 JDOM 是非官方提供的,应用起来比较简洁。

步骤

获得dom4j解析器

SAXReader saxr = new SAXReader();


利用dom4j解析器的read()方法解析xml,获取docuemnt对象

Document docuemnt = saxr.read(new File("src/res/ProfessionalBooks.xml"));


获得xml文件的根节点

Element rootelement = docuemnt.getRootElement();


自己创建通用方法一层一层剥开xml文件

具体代码

import java.io.File;
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.SAXReader;

public class MyDOM4j {

/*
* 创建一个方法一层一成剥开xml文件
*/
public static void PeelXml(Element rootelement) {
Iterator<Element> it = rootelement.elementIterator();

while (it.hasNext()) {
Element element = it.next();
//          System.out.println("........开始.........");
System.out.println();
System.out.print("节点名:"+element.getName()+" ");
List<Attribute> ats = element.attributes();
if (ats.size() > 0) {
for (int i = 0; i < ats.size(); i++) {
System.out.print("属性名:" + ats.get(i).getName() + "  " + "属性值:" + ats.get(i).getValue()+" ");
}
}
System.out.print("节点值:"+element.getTextTrim());
//          System.out.println("........结束.........");
if(element.elementIterator().hasNext()){
PeelXml(element);
}
}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
// 获得dom4j解析器
SAXReader saxr = new SAXReader();
// 利用dom4j解析器的read()方法解析xml,获取docuemnt对象
try {
Document docuemnt = saxr.read(new File("src/res/ProfessionalBooks.xml"));
// 获得xml文件的根节点
Element rootelement = docuemnt.getRootElement();
PeelXml(rootelement);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


注意:获得节点值时要用getTextTrim()避免输出来有很多空格和换行

JDOM方式

步骤

创建JDOM的解析器,saxbuilder

SAXBuilder saxbuilder = new SAXBuilder();


创建输入流,输入xml文件

FileInputStream in;
in = new FileInputStream("src/res/ProfessionalBooks.xml");
InputStreamReader ins = new InputStreamReader(in, "UTF-8");


通过saxBuilder的build方法,将输入流加载到saxBuilder中获得Document对象

Document doc = saxbuilder.build(ins);


利用自己写的方法,一层一层剥开xml文件

具体代码

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;

import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

public class MyJDOMTest {

/*
* 创建一个方法一层一成剥开xml文件
*/
public static void PeelXml(Element rootelement) {
List<Element> Childrenelement = rootelement.getChildren();
for (Element element : Childrenelement) {
// System.out.println(".......开始.......");
System.out.println();
System.out.print("节点名:" + element.getName() + "   ");
List<Attribute> atli = element.getAttributes();
if (atli.size() != 0) {

for (int i = 0; i < atli.size(); i++) {
System.out.print("属性名:" + atli.get(i).getName() + "   " + "属性值:" + atli.get(i).getValue() + "  ");

}
}

String value = element.getTextTrim();
// if (value.getBytes().length > 0) {

System.out.print("节点值:" + value);

// }

// System.out.print(".......结束.......");
if (element.getChildren().size() > 0) {
PeelXml(element);
}

}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
// 创建JDOM的解析器,saxbuilder

SAXBuilder saxbuilder = new SAXBuilder();
FileInputStream in;
try {
in = new FileInputStream("src/res/ProfessionalBooks.xml");
InputStreamReader ins = new InputStreamReader(in, "UTF-8");
// 通过saxBuilder的build方法,将输入流加载到saxBuilder中
Document doc = saxbuilder.build(ins);
Element rootelement = doc.getRootElement();
PeelXml(rootelement);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 利用SAXBuilder的build()方法解析xml文件

}

}


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