您的位置:首页 > 移动开发

Dom4jApp.java 解析和创建XML

2012-07-29 20:58 453 查看
package cn.studio.dom4jDemo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentFactory;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Dom4jApp {
public Dom4jApp() {

}

public static void parseXML(String name) {
SAXReader parser = new SAXReader();

InputStream in = Dom4jApp.class.getClassLoader().getResourceAsStream(
name);
try {
Document doc = parser.read(in);
Element rootElement = doc.getRootElement();
System.out.println("rootElemnt:" + rootElement.getName());
List<Element> list = rootElement.elements();
for (Element e : list) {
System.out.println(e.getName());
List<Attribute> attrList = e.attributes();
for (Attribute a : attrList) {
System.out.println(a.getName() + ":" + a.getValue());
}

Iterator<Element> iterator = e.elementIterator();
while (iterator.hasNext()) {
Element child = iterator.next();
String childName = child.getName();
String childText = child.getText();
System.out.println(childName + "--------" + childText);

}
}

} catch (DocumentException e) {
e.printStackTrace();
}

}

public static void createXML() {
DocumentFactory f = new DocumentFactory();
Document doc = f.createDocument();
doc.addComment("个人信息xml文档:");
/**
* 设置root元素
*/
Element root = doc.addElement("person-information");
/**
* 设置第一个儿子元素
*/
Element p1 = root.addElement("person");
p1.addComment("第一个人");
p1.addAttribute("pid", "1");
/**
* 设置孙子元素
*/
Element name1 = p1.addElement("name");
name1.setText("lyc");
Element sex1 = p1.addElement("sex");
sex1.setText("男");
Element age1 = p1.addElement("age");
age1.setText("23");
Element birthday1 = p1.addElement("birthday");
birthday1.setText("1989-11-20");
Element telphone1 = p1.addElement("telphone");
telphone1.setText("15115672844");
/**
* 设置第二个儿子元素
*/
Element p2 = root.addElement("person");
p2.addComment("第二个人");
p2.addAttribute("pid", "2");
/**
* 设置孙子元素
*/
Element name2 = p2.addElement("name");
name2.setText("fx");
Element sex2 = p2.addElement("sex");
sex2.setText("女");
Element age2 = p2.addElement("age");
age2.setText("23");
Element birthday2 = p2.addElement("birthday");
birthday2.setText("1989-12-01");
Element telphone2 = p2.addElement("telphone");
telphone2.setText("15178784949");

Element p3 = root.addElement("person");
p3.addComment("第三个人");
p3.addAttribute("pid", "3");
Element name3 = p3.addElement("name");
name3.setText("cn");
Element sex3 = p3.addElement("sex");
sex3.setText("女");
Element age3 = p3.addElement("age");
age3.setText("22");
Element birthday3 = p3.addElement("birthday");
birthday3.setText("1990-10-20");
Element telphone3 = p3.addElement("telphone");
telphone3.setText("15888663245");

/**
* 设置第四个儿子元素,修改元素
*/

Element p4 = p3.createCopy();
p4.addComment("第四个人");
p4.addAttribute("pid", "4");
p4.element("name").setText("lq");
p4.element("birthday").setText("1989-08-10");
root.add(p4);

/**
* 定义输入格式(编码,是否缩进,缩进的间距,换行输出?)
*/

OutputFormat format = new OutputFormat();
format.setEncoding("utf-8");
format.setIndent(true);
format.setIndent(" ");
format.setNewlines(true);
format.setSuppressDeclaration(true);

try {
OutputStream os = new FileOutputStream("src/people.xml");
XMLWriter writer = new XMLWriter(os, format);
writer.write(doc);
writer.close();
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
createXML();
parseXML("people.xml");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: