您的位置:首页 > 其它

DOM4j读写XML(实例)

2013-04-15 15:23 253 查看
以下代码分为2部分:

第一部分 是上边黑色部分代码(即66行之前),完成的功能是读取XML中的内容,并将值保存到按XML的逻辑关系建成的类中。即将每个XML保存成一个类的实例。这里也体现了如何逐层解析XML文档。

第二部分 是下边的蓝色部分代码(即66行之后),完成的功能是将通过第一步得到的类的实例写入到一个XML文件中。这里体现了如何写XML。

具体代码如下:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
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 HandleXML {

public static void main(String[] args) {
// TODO Auto-generated method stub

SAXReader reader = new SAXReader();
reader.setEncoding("gb2312");
Document document;
List serviceSystems = new ArrayList<ServiceSystem>();
List list1,list2,list3;
List serverList = new ArrayList();
List ServerTypeList = new ArrayList();
List ServiceSystemList = new ArrayList();
try {
document = reader.read(new File("E:\\serviceSystem.xml"));
Element rootElm = document.getRootElement();
list1 = (List)rootElm.elements();
for(Object oj0:list1){
Element element1 = (Element) oj0;
ServiceSystem s = new ServiceSystem();
s.systemName = element1.element("systemName").getText();
list2 = new ArrayList<ServerType>();
list2 = element1.elements("type");
for(Object oj1:list2){
Element element2 = (Element)oj1;
ServerType type = new ServerType();
type.typeName = element2.element("typeName").getText();
list3 = (List)element2.elements("server");
for(Object oj:list3){
Element element3 = (Element)oj;
Server server = new Server();
server.serverName = element3.element("serverName").getText();
server.vmName = element3.element("vmName").getText();
server.desc = element3.element("desc").getText();
serverList.add(server);
type.servers.add(server);
}

s.serverTypes.add(type);
}
ServiceSystemList.add(s);
}
serviceSystems = ServiceSystemList;
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

XMLWriter writer = null;// 声明写XML的对象
67
68         OutputFormat format = OutputFormat.createPrettyPrint();
69         format.setEncoding("gb2312");// 设置XML文件的编码格式
70
71         String filePath = "E:\\s.xml";
72         File file = new File(filePath);
73
74         Document _document = DocumentHelper.createDocument();
75         Element _root = _document.addElement("serviceSystems");
76
77         for(Object oj:serviceSystems){
78             ServiceSystem s = (ServiceSystem)oj;
79             Element _serviceSystem = _root.addElement("serviceSystem");
80             List l1 = s.getServerTypes();
81             Element _systemName = _serviceSystem.addElement("systemName");
82             _systemName.setText(s.getSystemName());
83
84             for(Object oj1:l1){
85                 Element _type = _serviceSystem.addElement("type");
86                 ServerType st = (ServerType)oj1;
87                 List l2 = st.getServers();
88                 Element _typeName = _type.addElement("typeName");
89                 _typeName.setText(st.getTypeName());
90
91                 for(Object oj2:l2){
92                     Element _server = _type.addElement("server");
93                     Server ss = (Server)oj2;
94                     Element _serverName = _server.addElement("serverName");
95                     _serverName.setText(ss.getServerName());
96                     Element _vmName = _server.addElement("vmName");
97                     _vmName.setText(ss.getVmName());
98                     Element _desc = _server.addElement("desc");
99                     _desc.setText(ss.getDesc());
100                 }
101             }
102         }
103
104         try {
105             writer = new XMLWriter(new FileWriter(file), format);
106             writer.write(_document);
107             writer.close();
108         } catch (IOException e) {
109             // TODO Auto-generated catch block
110             e.printStackTrace();
111         }
112
113     }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: