最近在研究开源软件“局域网聊天工具 Net-C”,项目主页为http://dgtalize.com/products/netc,里面有几段代码是用dom4j来读写xml文件的,本人使用较新的dom4j2.0改写了其中的这段代码。
xml文件为:
config.xml
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!--
3. Document : config.xml
4. Created on : 19 de marzo de 2008, 22:37
5. Author : Diego
6. Description: Configuration file por Net-C
7. --><config>
8. <param>
9. <name>ipBroadcast</name>
10. <value>192.168.255.255</value>
11. </param>
12. <param>
13. <name>portBroadcast</name>
14. <value>41516</value>
15. </param>
16. <param>
17. <name>portPrivateChat</name>
18. <value>41518</value>
19. </param>
20. <param>
21. <name>nickname</name>
22. <value>robbie</value>
23. </param>
24. <param>
25. <name>trayMsgUserLogged</name>
26. <value>true</value>
27. </param>
28. <param>
29. <name>trayMsgUserLoggedOff</name>
30. <value>false</value>
31. </param>
32. <param>
33. <name>trayMsgPrivateMsg</name>
34. <value>true</value>
35. </param>
36. <param>
37. <name>useNativeUI</name>
38. <value>true</value>
39. </param>
40. <param>
41. <name>startMinimized</name>
42. <value>false</value>
43. </param>
44. </config>
得到上述xml文档的Document对象的代码为
1. private Document getConfigDocument() throws Exception {
2. if (configDoc == null) {
3. File cfgFile = new File(filePath);
4. if (!cfgFile.exists()) {
5.
6. cfgFile.createNewFile();
7. try {
8. //FileInputStream fis = new FileInputStream(cfgFileOrig);
9. InputStream fis = getClass().getResourceAsStream("/com/dgtalize/netc/business/config.xml");
10. FileOutputStream fos = new FileOutputStream(cfgFile);
11. byte[] buf = new byte[1024];
12. int readCant = 0;
13. while ((readCant = fis.read(buf)) != -1) {
14. fos.write(buf, 0, readCant);
15. }
16. fis.close();
17. fos.close();
18. } catch (Exception ex) {
19. cfgFile.delete();
20. throw ex;
21. }
22. }
23.
24. SAXReader reader = new SAXReader();
25. configDoc = reader.read(new File(filePath));
26. configDoc.normalize();
27. }
28. return configDoc;
29. }
读取里面的参数(param)元素到变量的代码为:
1. public void readConfigFile() throws Exception {
2. configDoc = getConfigDocument();
3. Element rootElement = configDoc.getRootElement();
4. Iterator<Element> it = rootElement.elementIterator("param");
5. while (it.hasNext()) {
6. Element element = it.next();
7. String name = element.elementIterator("name").next().getTextTrim();
8. String value = element.elementIterator("value").next().getTextTrim();
9. if (name.equalsIgnoreCase("ipBroadcast")) {
10. ipBroadcast = value;
11. } else if (name.equalsIgnoreCase("portBroadcast")) {
12. portBroadcast = Integer.parseInt(value);
13. } else if (name.equalsIgnoreCase("nickname")) {
14. nickname = value == null ? "" : value;
15. } else if (name.equalsIgnoreCase("portPrivateChat")) {
16. portPrivateChat = Integer.parseInt(value);
17. } else if (name.equalsIgnoreCase("trayMsgUserLogged")) {
18. trayMsgUserLogged = Boolean.parseBoolean(value);
19. } else if (name.equalsIgnoreCase("trayMsgPrivateMsg")) {
20. trayMsgPrivateMsg = Boolean.parseBoolean(value);
21. } else if (name.equalsIgnoreCase("trayMsgUserLoggedOff")) {
22. trayMsgUserLoggedOff = Boolean.parseBoolean(value);
23. } else if (name.equalsIgnoreCase("useNativeUI")) {
24. useNativeUI = Boolean.parseBoolean(value);
25. } else if (name.equalsIgnoreCase("startMinimized")) {
26. startMinimized = Boolean.parseBoolean(value);
27. }
28. }
29.
30. }
根据里面的私有变量保存xml文件的代码为:
1. public void saveConfigFile() throws Exception {
2. Document configDocForSave = getConfigDocument();
3.
4. Element rootElement = configDocForSave.getRootElement();
5. Iterator<Element> it = rootElement.elementIterator("param");
6. while (it.hasNext()) {
7. Element element = it.next();
8. Element nextName = element.elementIterator("name").next();
9. String name = nextName.getTextTrim();
10. Element nextValue = element.elementIterator("value").next();
11. String value = nextValue.getTextTrim();
12. if (name.equalsIgnoreCase("ipBroadcast")) {
13. nextValue.setText(ipBroadcast);
14. } else if (name.equalsIgnoreCase("portBroadcast")) {
15. nextValue.setText(String.valueOf(portBroadcast));
16. } else if (name.equalsIgnoreCase("nickname")) {
17. nextValue.setText(nickname);
18. } else if (name.equalsIgnoreCase("portPrivateChat")) {
19. nextValue.setText(String.valueOf(portPrivateChat));
20. } else if (name.equalsIgnoreCase("trayMsgUserLogged")) {
21. nextValue.setText(String.valueOf(trayMsgUserLogged));
22. } else if (name.equalsIgnoreCase("trayMsgPrivateMsg")) {
23. nextValue.setText(String.valueOf(trayMsgPrivateMsg));
24. } else if (name.equalsIgnoreCase("trayMsgUserLoggedOff")) {
25. nextValue.setText(String.valueOf(trayMsgUserLoggedOff));
26. trayMsgUserLoggedOff = Boolean.parseBoolean(value);
27. } else if (name.equalsIgnoreCase("useNativeUI")) {
28. nextValue.setText(String.valueOf(useNativeUI));
29. } else if (name.equalsIgnoreCase("startMinimized")) {
30. nextValue.setText(String.valueOf(startMinimized));
31. }
32. }
33. XMLWriter writer = new XMLWriter(new FileWriter(filePath));
34. writer.write(configDocForSave);
35. writer.close();
36. }
分享到:
相关推荐
java 通过dom4j操作 xml,含范例和源码
XMLDOM的相关知识,以及如何通过JavaScript XML DOM对象来读取XML文件的数据,并添加、修改、删除XML文件元素。同时,《JavaScript+DHTML语法与范例详解词典》还讲解AJAX技术的用法,AJAX的定义、语法、功能和执行...
第四部分(XML高阶),内容包括:XML在数据库中的应用,XML中的矢量图形处理技术,WML——无线接入的XML,XML与Java;第五部分(基于XML的Web站点应用与开发),内容包括:WIDL自动控制Web站点,频道定义格式推送...
所以XML作为数据的这条主线包括:第6章:SAX:XML的简单API 第7章:命名空间和模式第8章:链接和查询第9章:操作XML 第10章:XML和数据库第11章:服务器到服务器第12章:电子商务第14章:WAP和WML 3. XML的可视化...
XML创建了标识,而DOM的作用就是告诉script如何在浏览器窗口中操作和显示这些标识 上面我们已经简要的讲述了一些XML的基本原理,我们来看看它们之间的关联以及它们是如何工作的,先看这里一张图: 1.XML描述...
第四部分(XML高阶),内容包括:XML在数据库中的应用,XML中的矢量图形处理技术,WML——无线接入的XML,XML与Java;第五部分(基于XML的Web站点应用与开发),内容包括:WIDL自动控制Web站点,频道定义格式推送Web站点...
12.8.2 如何使用XML DOM--一个利用XML实现多级关联下拉选择框的例子 12.9 总结 第13章 事件处理 13.1 什么是事件 13.1.1 消息与事件响应 13.1.2 浏览器的事件驱动机制 13.2 基本事件处理 ...
实例002 定时打开窗口 4 实例003 通过按钮创建窗口 5 实例004 自动关闭的广告窗口 6 实例005 控制弹出窗口居中显示 7 实例006 弹出的窗口之Cookie控制 9 实例007 为弹出的窗口加入关闭按钮 11 实例008 关闭弹出窗口...
Test4IE XMLDOM.htm IE中的XML DOM支持 Test Firefox XMl DOm.htm Firefox中的XML DOM支持 Firefox LoadXML.htm Firefox中的XML DOM支持 XPath Example1.xml XPath Writer.xml 开发中实际使用的XML文档 Test4IE ...
实例105 DOM4j解析XML文件 278 实例106 JDOM解析XML文件 285 实例107 DOM解析XML文件 292 实例108 SAX解析XML文件 297 实例109 W3C解析XML文件 301 第13章 Java网络编程 306 实例110 获取IP地址和域名 306 ...
Test4IE XMLDOM.htm IE中的XML DOM支持 Test Firefox XMl DOm.htm Firefox中的XML DOM支持 Firefox LoadXML.htm Firefox中的XML DOM支持 XPath Example1.xml XPath Writer.xml 开发中实际使用的XML文档 ...
Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf 第I部分 语言结构和环境 第1章 visual studio 2010 3 1.1 visual studio 2010:从express到ultimate的各种版本 4 1.2 visual basic的关键字和语法 7 ...
本范例通过xml模块对xml文件进行写入操作 from xml.dom.minidom import Document doc = Document() people = doc.createElement(people) doc.appendChild(people) aperson = doc.createElement(person) people....
顺序如下: 1、多种字体大小显示 2、c:out标记输出 3、获取当前时间 4、include包含语句 5、建立错误处理页面的范例程序 6、jsp:forward 7、简单计数器 ...99、DOM读取XML文档 100、SAX读取XML文档
应用开源jar包包括httpclient(内容读取),dom4j(配置文件解析),jericho(html解析),已经在war包的lib下。 这个项目目前还很不成熟,但是功能基本都完成了。要求使用者熟悉XML,熟悉正则表达式。目前通过这个工具...
3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 4.1、Web容器简介 4.2、Tomcat简介 4.3、Tomcat服务器的下载及配置 ...