一、使用dom4j创建xml文件
1、代码如下
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;
public class Create{
public static void main(String []args)throws Exception {
/*
在我们解析XML文件一开始,是从文件中解析到一个Document
也就是说,xml文件中,相当于存了一个Document对象
那么,如果我们想创建一个xml文件,那么是不是必须得先组装出Document
但是:
Document 在API中是一个接口 new?
我们我们需要获得一个空的Document对象.
*/
//1首先获得一个空的Document
Document doc = DocumentHelper.createDocument();
//doc如果添加一个Element 那么这个Element就是根元素
Element root = doc.addElement("dept");
//给根元素添加的子元素都是二级子元素
Element deptno = root.addElement("deptno");
//setText 给这个标签添加一个内容
deptno.setText("10");
//addAttribute 给元素添加一个指定名称 指定值得一个属性
deptno.addAttribute("loc","NewYork");
Element dname = root.addElement("dname");
dname.setText("SALES");
//将组装好的Document doc写到文件里去 写到xml文件中
XMLWriter writer = new XMLWriter(
new FileOutputStream("ak.xml"),
OutputFormat.createPrettyPrint()
);
//通过writer将Document以一定的格式写出到指定的文件中
writer.write(doc);
writer.close();
}
}
2、创建的xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<dept>
<deptno loc="NewYork">10</deptno>
<dname>SALES</dname>
</dept>
二、使用dom4j 解析xml文件
1xml内容:
<?xml version="1.0" encoding="gbk" ?>
<!--
<!DOCTYPE ak SYSTEM "out.dtd">
-->
<!--
<!DOCTYPE etoak SYSTEM "out.dtd">
使用SYSTEM的方式来引用一个外部文件
表示从本地资源中,查找一个指定名称的外部DTD
PUBLIC :
<!DOCTYPE 根元素名 PUBLIC "" "网络资源url" >
-->
<ak>
<class id="001" deptno="20">
<cno>kk</cno>
<cname>4教</cname>
<cnum>9</cnum>
</class>
<class id="002" deptno="20">
<cno>aa</cno>
<cname>4教</cname>
<cnum>13</cnum>
</class>
<class id="003" deptno="10">
<cno>tt</cno>
<cname>5教</cname>
<cnum>18</cnum>
</class>
<boss>
<name></name>
</boss>
</ak>
2、java代码解析
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;
public class Exec1{
public static void main(String []args) throws Exception{
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("ak.xml"));
Element root = doc.getRootElement();
List<Element> firsts = root.elements("class");
for(Element e:frists){
if(e.attributeValue("id").equals(str)){
System.out.println(e.elementTextTrim("cnum"));//得到这个元素下的子元素名对应的值
}
}
}
}