1. 设置dom4j的配置
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
2.解析xml中的数据节点
<?xml version="1.0" encoding="UTF-8"?>
<!-- 区分大小写 -->
<data id="myprop">
<emp id="1" name="Java">
<empno><![CDATA[Ja<va]]></empno>
<address>java</address>
<tel>010</tel>
<fax>010</fax>
<email>java@sun.com</email>
</emp>
<emp id="2" name="Oracle">
<empno><![CDATA[Oracle<va]]></empno>
<address>Oracle</address>
<tel>020</tel>
<fax>020</fax>
<email>oracle@oracle.com</email>
</emp>
</data>
3.创建一个实体类,get和set的方法和toString方法
4.如下
5.`第一种方法 根据io流解析xml
在这里
//第一种 根据io流解析xml
public List<EmpInfo> parseInputStream()
{
List<EmpInfo> emps=new ArrayList<EmpInfo>();
//当前类的classloader ,(getResourceAsStream)获取资源数据流
InputStream stream = this.getClass().getClassLoader().getResourceAsStream("date.xml");
try {
Document read = new SAXReader().read(stream);
Element element = read.getRootElement();
List list = element.elements("emp");
for (Iterator it = list.iterator(); it.hasNext();) {
Element empEle=(Element) it.next();
Attribute idatt = empEle.attribute("id");
String id=idatt.getValue();
Attribute nameatt = empEle.attribute("name");
String name=nameatt.getValue();
Element empnoEle = empEle.element("empno");
String empno = empnoEle.getText();
Element addressEle = empEle.element("address");
String address = addressEle.getText();
Element telEle = empEle.element("tel");
String tel = telEle.getText();
Element faxEle = empEle.element("fax");
String fax = faxEle.getText();
Element emailEle = empEle.element("email");
String email = emailEle.getText();
EmpInfo empInfo = new EmpInfo();
empInfo.setId(id);
empInfo.setName(name);
empInfo.setAddress(address);
empInfo.setEmail(email);
empInfo.setEmpno(empno);
empInfo.setFax(fax);
empInfo.setTel(tel);
emps.add(empInfo);
}
} catch (Exception e) {
e.printStackTrace();
}
return emps;
}
public static void main(String[] args) {
List<EmpInfo> list = pa.parseInputStream();
for (EmpInfo empInfo : list) {
System.out.println(empInfo);
}
}
结果如下:
6.第二种解析方法
在这里:
//第二种 解析
public List<EmpInfo> parse(String file){
List<EmpInfo> emps=new ArrayList<EmpInfo>();
try {
//获取一个xml文件
File f=new File(file);
//读取一个xml文件,
Document doc = new SAXReader().read(f);
//取(Element)根节点
Element root = doc.getRootElement();
//查询emp的节点集合
List list = root.elements("emp");
for (Iterator it = list.iterator(); it.hasNext();)
{
Element empEle=(Element) it.next();
Attribute idAtt = empEle.attribute("id");
String id = null;
if(idAtt != null)
{
id = idAtt.getValue();
}
Attribute nameAtt = empEle.attribute("name");
String name = null;
if(nameAtt != null)
{
name = nameAtt.getValue();
}
Element empnoEle = empEle.element("empno");
String empno = empnoEle.getText();
Element addressEle = empEle.element("address");
String address = addressEle.getText();
Element telEle = empEle.element("tel");
String tel = telEle.getText();
Element faxEle = empEle.element("fax");
String fax = faxEle.getText();
Element emailEle = empEle.element("email");
String email = emailEle.getText();
EmpInfo empInfo = new EmpInfo();
empInfo.setId(id);
empInfo.setName(name);
empInfo.setAddress(address);
empInfo.setEmail(email);
empInfo.setEmpno(empno);
empInfo.setFax(fax);
empInfo.setTel(tel);
emps.add(empInfo);
}
} catch (Exception e) {
e.printStackTrace();
}
return emps;
}
public static void main(String[] args) {
//方法一 解析
XmlAttrParse pa= new XmlAttrParse();
String file="F:/WorkSpace4/a_dianshangxia/Project/src/main/resources/date.xml";
List<EmpInfo> emps = pa.parse(file);
for (EmpInfo empInfo : emps) {
System.out.println(empInfo.toString());
}
}
第二中方法结果与第一种方法的结果一致
生成xml文档
第一种方法
在这里:
public void writeXml(List<EmpInfo> emps){
try {
Document document = DocumentHelper.createDocument();
Element element = DocumentHelper.createElement("data");
document.setRootElement(element);
for (EmpInfo ei : emps)
{
Element empEle = DocumentHelper.createElement("emp");
Attribute idatt = DocumentHelper.createAttribute(empEle, "id", ei.getId());
empEle.add(idatt);
Attribute nameatt = DocumentHelper.createAttribute(empEle, "name", ei.getName());
empEle.add(nameatt);
element.add(empEle);
Element empnoEle = DocumentHelper.createElement("empno");
empEle.add(empnoEle);
CDATA cdata = DocumentHelper.createCDATA(ei.getEmpno());
empnoEle.add(cdata);
Element addressEle = DocumentHelper.createElement("address");
empEle.add(addressEle);
addressEle.setText(ei.getAddress());
Element telEle = DocumentHelper.createElement("tel");
empEle.add(telEle);
telEle.setText(ei.getTel());
Element faxEle = DocumentHelper.createElement("fax");
empEle.add(faxEle);
faxEle.setText(ei.getFax());
Element emailEle = DocumentHelper.createElement("email");
empEle.add(emailEle);
emailEle.setText(ei.getEmail());
}
OutputFormat fot = new OutputFormat("\t",true);
FileOutputStream str = new FileOutputStream("f:/my2.xml");
XMLWriter xmlw = new XMLWriter(str,fot);
xmlw.write(element);
str.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
XmlAttrParse pa= new XmlAttrParse();
String file="F:/WorkSpace4/a_dianshangxia/Project/src/main/resources/date.xml";
List<EmpInfo> emps = pa.parse(file);
/方法一 生成
pa.writeXml(emps);
}
结果如下: