package
jmyang.dom4j;
/**
* <p>Title:dom4j测试 </p>
* <p>Description: 使用xpath读取节点内容、属性</p>
* <p>Copyright: Copyright (c) 2012</p>
* <p>Company: infosky.com.cn</p>
* @author:yjmyzz@126.com 菩提树下的杨过
* @version 1.0
*/
import
java.util.*;
import
java.io.*;
import
org.dom4j.*;
import
org.dom4j.io.*;
public
class
XmlTest {
public
static
void
Test() {
String fileName = System.getProperty(
"user.dir"
) +
"\\demo.xml"
;
try
{
SAXReader reader =
new
SAXReader();
Document doc = reader.read(fileName);
List peoples = doc.selectNodes(
"//*[@name]"
); //选择所有具有name属性的节点(即demo.xml中的所有card节点)
for
(Iterator iter = peoples.iterator(); iter.hasNext(); ) {
Element card = (Element) iter.next();
List attrList = card.attributes();
for
(Iterator attr = attrList.iterator(); attr.hasNext(); ) {
Attribute a = (Attribute) attr.next();
System.out.println(a.getName() +
"="
+ a.getValue());
}
System.out.println(
"----------------------------------------------------"
);
}
Element zhangsan = (Element) doc.selectSingleNode(
"//card[@id='2']"
); //查找“id属性”=
2
的card元素
System.out.println(
"张三的名称:"
+ zhangsan.attribute(
"name"
).getValue());
Node addrFamily = zhangsan.selectSingleNode(
"./address/item[2]"
);
System.out.println(
"张三的单位地址:"
+ addrFamily.getStringValue());
System.out.println(
"----------------------------------------------------"
);
zhangsan.addElement(
"email"
).addAttribute(
"type"
,
"工作"
).addText(
"work@some-domain.com"
);
zhangsan.addElement(
"email"
).addAttribute(
"type"
,
"私人"
).addCDATA(
"private@some-domain.com"
);
System.out.println(zhangsan.asXML());
System.out.println(
"----------------------------------------------------"
);
FileWriter fileWriter =
new
FileWriter(System.getProperty(
"user.dir"
) +
"\\demo2.xml"
);
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer =
new
XMLWriter(System.out, format);
writer.setWriter(fileWriter);
writer.write(doc);
writer.close();
}
catch
(Exception e) {
e.printStackTrace();
}
}
}