创建XML文件:
public class Dom4jCreateXml { public void testCreatXml() {
//创建文档对象
Document document = DocumentHelper.createDocument();
//创建跟节点
Element root = document.addElement("students");
//根据根节点创建子节点
Element stu01 = root.addElement("student");
//添加student子节点id属性
stu01.addAttribute("id", "001");
//根据student子节点创建name子节点
Element stu01Name = stu01.addElement("name");
//给子节点name添加文本
stu01Name.addText("zhangsan");
//根据stu01创建子节点age
Element stu01Age = stu01.addElement("age");
//给子节点age添加文本
stu01Age.addText("23"); //设置输出编码格式
OutputFormat format = OutputFormat.createCompactFormat();
format.setEncoding("utf-8"); //输出指定的xml文件
Writer out;
try {
out = new FileWriter("E://lazyli/test.xml");
//创建XML输出对象,以指定的格式输出
XMLWriter writer = new XMLWriter(out, format);
writer.write(document);
System.out.println("生成xml文件成功!");
out.close();
} catch (Exception e) {
System.out.println("生成xml文件失败!");
e.printStackTrace();
} } /**
* 创建一个html格式的xml
* <?xml version="1.0" encoding="UTF-8"?>
* <Packet type="REQUEST" version="1.0">
* <Head>
* <RequestID> AC00003900021456305194844</RequestID>
* <RequestType>0002</RequestType>
* <User>AC000039</User>
* <Password>bc0TYXab4UjcZiOtX9XpdQ</Password>
* </Head>
* <Body>
* ……
* </Body>
* </Packet>
*/
public void testCreatXml2() {
//创建一个Document对象
Document document = DocumentHelper.createDocument();
//创建一个根节点
Element root = document.addElement("Packet");
//设置根节点属性
root.addAttribute("type", "REQUEST");
root.addAttribute("version", "1.0");
//创建root的子节点head,body
Element eleHead = root.addElement("head");
Element eleBody = root.addElement("body");
//处理子节点head,有三个子节点RequestType,User,Password,并添加各个的文本
Element eleRequestType = eleHead.addElement("RequestType");
eleRequestType.addText("AC00003900021456305194844");
Element eleUser = eleHead.addElement("User");
eleUser.addText("AC000039");
Element elePassword = eleHead.addElement("Password");
elePassword.addText("bc0TYXab4UjcZiOtX9XpdQ");
//处理子节点Body,添加子节点hello,文本world
Element eleHello = eleBody.addElement("Hello");
eleHello.addText("world"); //指定文档输出编码格式
OutputFormat format = OutputFormat.createCompactFormat();
format.setEncoding("utf-8"); Writer out;
try {
//创建一个文档输出流对象,向指定的文件中输入
out = new FileWriter("E://lazyli/test02.xml");
//创建XMLWriter对象
XMLWriter writer = new XMLWriter(out, format);
writer.write(document);
System.out.println("成功生成xml文件!");
out.close();
writer.close(); } catch (Exception e) {
e.printStackTrace();
} } public static void main(String[] args) {
Dom4jCreateXml createXml = new Dom4jCreateXml();
// createXml.testCreatXml();
createXml.testCreatXml2();
} }
XML文件的解析
public class ParseXml01 { User user = new User(); //递归遍历xml文档,获取里面的元素
public void parseElement02(Element rootElement) {
Element element; //使用迭代器遍历根节点
for (Iterator iterator = rootElement.elementIterator(); iterator.hasNext(); ) {
//获取根子节下面的节点
element = (Element) iterator.next();
//打印节点的名字和文本
//System.out.println("当前节点:" + element.getName() + ",文本:" +element.getTextTrim());
//将文件中的用户信息提取出来
if (element.getName().equals("User")) {
if (element.getName() != null && element.getName() != "") {
user.setName(element.getTextTrim());
}
}
if (element.getName().equals("Password")) {
if (element.getName() != null && element.getName() != "") {
user.setPassword(element.getTextTrim());
}
}
//判断当前节点是否存在子节点,存在的话就继续遍历
//得到节点类型,为1代表有子节点
if (element.getNodeType() == Node.ELEMENT_NODE) {
if (element.hasContent()) {
parseElement02(element);
}
}
}
} //解析
public void parseXmlMethod(File file) throws Exception {
//创建SAXReader解析对象
SAXReader reader = new SAXReader();
//根据SAXReader对象创建Document对象
Document document = reader.read(file);
//document对象得到根节点
Element eleRoot = document.getRootElement();
//打印root信息
System.out.println("根元素:" + eleRoot.getName() + ",属性:");
//调用递归方法进行解析节点信息
parseElement02(eleRoot);
} //打印用户信息
public void userInfo() throws Exception {
//调用解析方法,解析文件,输出文件中的用户信息
parseXmlMethod(new File("E://lazyli/test02.xml"));
System.out.println("用户名:" + user.getName() + ",密码:" + user.getPassword());
} public static void main(String[] args) throws Exception {
ParseXml01 parseXml01 = new ParseXml01();
parseXml01.userInfo(); } }