dom4j解析xml

微笑首先来看看今天等待解析的xml文档

这是由java代码通过dom4j开源框架支持生成的一个xml文档,java代码如下:
package cn.sun.dom4j;

import java.io.FileOutputStream;

import java.io.IOException;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

/*
 * 
 * dom4j框架学习,使用dom4j创建XML文档并输出与保存
 */
public class Dom4jTest1 {

public static void main(String[] args){
System.out.println(createXml());
ParseXmlByDom4j.parseXml();
}
public static boolean createXml() {
boolean result=false;
//第一种方式:先创建空文档,再创建根元素,再添加根元素到文档
//创建文档使用了Helper类
/*Document document=DocumentHelper.createDocument();
//document.setXMLEncoding("GBK");
//创建根节点并添加入文档
Element root=DocumentHelper.createElement("student");
document.setRootElement(root);
*/
//第二种方式:先创建一个元素,再在创建文档的同时将该元素添加到文档作为根元素
Element root=DocumentHelper.createElement("student");
Document document=DocumentHelper.createDocument(root);

root.addAttribute("name", "zhangsan");
//添加子节点:add之后就返回这个元素
Element idcardE=root.addElement("idcard");
Element gradeE=root.addElement("grade");
Element phoneE=root.addElement("phone");
//phoneE.addAttribute("a","d");
//设置元素主体或者属性
idcardE.setText("123456");
gradeE.setText("85");
phoneE.setText("18776891905");
//输出
//输出到控制台
XMLWriter writer=new XMLWriter();
try {
writer.write(document);
} catch (IOException e) {
throw new RuntimeException(e);
}
//输出
//输出到文件
//设置格式
OutputFormat format=new OutputFormat("   ");// 设置缩进为4个空格,并且另起一行为true

XMLWriter writer2File;
try {
writer2File = new XMLWriter(new FileOutputStream("e:/first.xml"),format);

writer2File.write(document);
result=true;

} catch (IOException e) {
throw new RuntimeException(e);

return result;
}

}


接下来就到了如何解析生成的xml文档了,当然该文档并不一定非要java代码生成,安全可以自己动手操作,至于用代码生成存在什么好处,还有待我做进一步研究.现在我们来看代码:
package cn.sun.dom4j;

import java.util.Iterator;

import java.util.List;

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

public class ParseXmlByDom4j {

public static void parseXml(){
SAXReader saxReader=new SAXReader();
try {
//得到文檔對象
Document document=saxReader.read("e:/first.xml");
//获取根元素
Element root=document.getRootElement();
System.out.println(root.getName());
//通过root可以获取所有子元素  注:这里不包括孙元素,获取孙元素还需要递归
List<Element> listE=root.elements();
//root.element("grade").node(0).getText();
//还可以获得特定名称的所有子元素
//List<Element> listE2=root.elements("grade");
//很吊的for循环
/*for(int i=0;i<9;i++){

}*/
for (Iterator iter = root.elementIterator(); iter.hasNext();){
Element element=(Element)iter.next();
System.out.println(element.getName()+":"+element.getText());
}


} catch (DocumentException e) {
throw new RuntimeException(e);
}
/*
 * 还可以将JAXP的document转换为dom4j的document
 * System.out.println("用DOMReader-----------------------");
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        // 注意要用完整类名
        org.w3c.dom.Document document2 = db.parse(new File("students.xml "));

        DOMReader domReader = new DOMReader();

        // 将JAXP的Document转换为dom4j的Document
        Document document3 = domReader.read(document2);

        Element rootElement = document3.getRootElement();微笑

        System.out.println("Root: " + rootElement.getName());
 */
}
}
敲到这里,能够对dom4j的语法有个初步的认识,也能熟悉dom4j的一些常用功能以及操作步骤.更多相关细节请参照dom4japi文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值