首先来看看今天等待解析的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文档
这是由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文档