- 浏览: 190874 次
- 性别:
- 来自: 深圳
-
最新评论
-
wenhai_zhang:
谢谢! hyz522875643 写道
[转]真正的用户体验 -
hyz522875643:
[转]真正的用户体验 -
wenhai_zhang:
xiangximingong 写道灰常感谢,终于找到了……不客 ...
《OSGI 原理与最佳实践》配套源代码 -
xiangximingong:
灰常感谢,终于找到了……
《OSGI 原理与最佳实践》配套源代码 -
emilyzhanghong:
多谢
《OSGI 原理与最佳实践》配套源代码
/** * doc2String * 将xml文档内容转为String * @return 字符串 * @param document */ public static String doc2String(Document document) { String s = ""; try { TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); /** 使用GB2312编码 */ //transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312"); Source source = new DOMSource( document ); /** 直接输出到控制台 */ //Result output = new StreamResult( System.out ); StringWriter out = new StringWriter(); Result output = new StreamResult( out ); transformer.transform( source, output ); out.flush(); s = out.toString(); }catch(Exception ex) { ex.printStackTrace(); } return s; }
2、将符合XML格式的String 转化为XML Document
/** * string2Document * 将字符串转为Document * @return * @param s xml格式的字符串 */ public static Document string2Document(String s) { Document document = null; try { DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder(); document = parser.parse( new InputSource(new StringReader(s)) ); }catch(Exception ex) { ex.printStackTrace(); } return document; }
3、将Document对象保存为一个xml文件到本地
/** * doc2XmlFile * 将Document对象保存为一个xml文件到本地 * @return true:保存成功 flase:失败 * @param filename 保存的文件名 * @param document 需要保存的document对象 */ public static boolean doc2XmlFile(Document document,String filename) { boolean flag = true; try { /** 将document中的内容写入文件中 */ TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); /** 编码 */ //transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312"); DOMSource source = new DOMSource(document); StreamResult result = new StreamResult(new File(filename)); transformer.transform(source, result); }catch(Exception ex) { flag = false; ex.printStackTrace(); } return flag; }
4、将xml格式的字符串保存为本地文件,如果字符串格式不符合xml规则,则返回失败
/** * string2XmlFile * 将xml格式的字符串保存为本地文件,如果字符串格式不符合xml规则,则返回失败 * @return true:保存成功 flase:失败 * @param filename 保存的文件名 * @param str 需要保存的字符串 */ public static boolean string2XmlFile(String str,String filename) { boolean flag = true; /* 以下格式生成的文件是以UTF-8为格式 */ try { Document doc = string2Document(str); flag = doc2XmlFile(doc,filename); }catch (Exception ex) { flag = false; ex.printStackTrace(); } /** 以下不通过xml格式验证,象生成普通文件格式的方法生成xml文件 OutputStream os = null; try { os = new FileOutputStream(filename); os.write(str.getBytes()); os.flush(); } catch (Exception ex) { flag = false; ex.printStackTrace(); }finally { try{ if (os!=null) os.close(); }catch (Exception ex) { ex.printStackTrace(); } } */ return flag; }
5、载入一个xml文档
/** * load * 载入一个xml文档 * @return 成功返回Document对象,失败返回null * @param uri 文件路径 */ public static Document load(String filename) { Document document = null; try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder=factory.newDocumentBuilder(); document=builder.parse(new File(filename)); document.normalize(); } catch (Exception ex){ ex.printStackTrace(); } return document; }
6、演示String保存为xml文件
/** * xmlWriteDemoByString * 演示String保存为xml文件 */ public void xmlWriteDemoByString() { String s = ""; /** xml格式标题 "<?xml version='1.0' encoding='GB2312'?>" 可以不用写*/ s = "<?xml version='1.0' encoding='GB2312'?>" +"<config>\r\n" +" <ftp name='DongDian'>\r\n" +" <ftp-host>127.0.0.1</ftp-host>\r\n" +" <ftp-port>21</ftp-port>\r\n" +" <ftp-user>cxl</ftp-user>\r\n" +" <ftp-pwd>longshine</ftp-pwd>\r\n" +" <!-- ftp最多尝试连接次数 -->\r\n" +" <ftp-try>50</ftp-try>\r\n" +" <!-- ftp尝试连接延迟时间 -->\r\n" +" <ftp-delay>10</ftp-delay>\r\n" +" <ftp-chn>中文</ftp-chn>\r\n" +" </ftp>\r\n" +"</config>\r\n"; //将文件生成到classes文件夹所在的目录里 string2XmlFile(s,"xmlWriteDemoByString.xml"); //将文件生成到classes文件夹里 string2XmlFile(s,"classes/xmlWriteDemoByString.xml"); }
7、演示手动创建一个Document,并保存为XML文件
/** * 演示手动创建一个Document,并保存为XML文件 */ public void xmlWriteDemoByDocument() { /** 建立document对象 */ try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.newDocument(); /** 建立config根节点 */ Element configElement = document.createElement("config"); document.appendChild( configElement ); /** 建立ftp节点 */ Comment cmt = document.createComment("东电ftp配置"); configElement.appendChild(cmt); Element ftpElement = document.createElement("ftp"); configElement.appendChild(ftpElement); ftpElement.setAttribute("name","DongDian"); /** ftp 属性配置 */ Element element = document.createElement("ftp-host"); element.appendChild(document.createTextNode( "127.0.0.1" )); ftpElement.appendChild(element); element = document.createElement("ftp-port"); element.appendChild(document.createTextNode( "21" )); ftpElement.appendChild(element); element = document.createElement("ftp-user"); element.appendChild(document.createTextNode( "cxl" )); ftpElement.appendChild(element); element = document.createElement("ftp-pwd"); element.appendChild(document.createTextNode( "longshine" )); ftpElement.appendChild(element); element = document.createElement("ftp-try"); element.appendChild(document.createTextNode( "50" )); ftpElement.appendChild(element); element = document.createElement("ftp-chn"); element.appendChild(document.createTextNode( "中文" )); ftpElement.appendChild(element); /** 保存Document */ doc2XmlFile(document,"classes/xmlWriteDemoByDocument.xml"); } catch (Exception ex){ ex.printStackTrace(); } }
8、演示读取文件的具体某个节点的值
/** * 演示读取文件的具体某个节点的值 */ public static void xmlReadDemo() { Document document = load("classes/xmlWriteDemoByDocument.xml"); Node root=document.getDocumentElement(); /** 如果root有子元素 */ if(root.hasChildNodes()) { /** ftpnodes */ NodeList ftpnodes = root.getChildNodes(); /** 循环取得ftp所有节点 */ for (int i=0;i<ftpnodes.getLength();i++) { NodeList ftplist = ftpnodes.item(i).getChildNodes(); for (int k=0;k<ftplist.getLength();k++) { Node subnode = ftplist.item(k); if (subnode.getNodeType()==Node.ELEMENT_NODE) { /** 打印ftp所有节点属性的值 */ System.out.println(subnode.getNodeName()+":"+subnode.getFirstChild().getNodeValue()); } } } } }
9、演示修改文件的具体某个节点的值
/** * 演示修改文件的具体某个节点的值 */ public static void xmlUpdateDemo() { Document document = load("classes/xmlWriteDemoByDocument.xml"); Node root=document.getDocumentElement(); /** 如果root有子元素 */ if(root.hasChildNodes()) { /** ftpnodes */ NodeList ftpnodes = root.getChildNodes(); /** 循环取得ftp所有节点 */ for (int i=0;i<ftpnodes.getLength();i++) { NodeList ftplist = ftpnodes.item(i).getChildNodes(); for (int k=0;k<ftplist.getLength();k++) { Node subnode = ftplist.item(k); /** 删除ftp-chn节点 */ if (subnode.getNodeType()==Node.ELEMENT_NODE&&subnode.getNodeName()=="ftp-chn") { ftpnodes.item(i).removeChild(subnode); } /** 修改ftp-host的值为 192.168.0.1 */ if (subnode.getNodeType()==Node.ELEMENT_NODE&&subnode.getNodeName()=="ftp-host") { subnode.getFirstChild().setNodeValue("192.168.0.1"); } } } } /** 修改完后重新保存 */ doc2XmlFile(document,"classes/xmlWriteDemoByDocument.xml"); }
原文地址 http://cache.baidu.com/c?word=%BD%AB%3Bdomsource%3B%D7%AA%BB%AF%3B%CE%AA%3Bstring&url=http%3A//hi%2E
张文海
发表评论
-
[转]Apache POI简单说明
2014-11-04 23:56 1632最近项目上需要用到操作Word,于是又看了一下POI相关的A ... -
关于Pydev安装问题,安装成功确看不到插件的解决办法
2014-06-15 17:51 11998最近想写个脚本抓取点 ... -
【转】jQuery Ajax提交表单乱码问题的解决
2014-04-20 23:35 766【原文】http://m.oschina.net/blog/ ... -
随意写的 消费者-生产者 示例
2014-03-27 23:37 536使用了自己写的log4j拓展显示线程ID的jar包。 ... -
Log4j显示线程ID
2014-03-27 23:31 11847问题: 在进行多线程编程时,经常会在调试信息中看到线程的处 ... -
maven入门第一步
2012-05-14 23:46 823由于项目中使用到maven,需要全新学习。 学习第一步 ... -
svn1.6中文资料
2011-04-04 23:18 1053SVN 1.6中文资料。 -
[转]使用电子邮件创建jira事务
2011-03-07 10:10 0原文:http://hi.baidu.com/tina ... -
222222222222222
2011-03-01 17:35 05.《硅谷传奇》 (Pirates of Silicon V ... -
JIRA---
2011-01-03 21:39 0JIRA--- -
Postgresql 数据库相关
2010-12-27 23:18 842最近一个项目用到PostgreSQL数据库,关于安装方面的一些 ... -
HSQLDB
2010-12-06 23:49 0HSQLDB -
[提问]file表单域 如何设置指定的文件类型
2010-10-21 14:21 1341file表单域 如何设置指定的文件类型 -
SmartUpload文件上传
2010-10-21 01:04 2483一个简单的SmartUpload示 ... -
【疑问】表单不提交
2010-10-14 09:48 1412表单代码: <input type="but ... -
java版SFTP实现示例(使用jsch)
2010-09-20 23:41 2324java版SFTP实现示例(使用jsch) 具体见包 -
syslog学习资料
2010-09-13 00:34 1062syslog学习资料 -
SWT与SWING交互--组件互访问
2010-06-29 17:30 1300由于SWT组件的特殊性,在SWT中,通常存在一个被称为&quo ... -
在SWT里显示AWT对象 - 八进制 - 博客园(转载)
2010-06-24 02:03 1449今天遇到一个问题,就是要在一个Eclipse插件里显示JFre ... -
在awt/swing程序中添加swt (Browser控件的使用)【转】
2010-06-24 01:49 2287听这个题目就挺奇怪——谁会在awt/swing程序里加swt的 ...
相关推荐
如果处理的XML文件较小,DOM和JDOM可能是不错的选择,因为它们提供了完整的文档表示。对于大型文件,SAX和DOM4J由于其低内存占用而更受欢迎。如果需要进行复杂的查询,DOM4J的XPath支持则非常有用。在引入对应的库...
本教程将深入探讨Java中使用DOM模型解析XML文件的方法。 首先,我们需要了解DOM的基本概念。DOM将XML文档视为一个节点树,其中根节点代表整个文档,其他节点则表示文档的各种元素、属性、文本等。通过DOM API,我们...
要读取XML文件,Java提供了多种方法。以下是四种常用的方法,每种都有其适用场景和特点: 1. **DOM解析器(Document Object Model)** DOM解析器将整个XML文件加载到内存中,创建一个树形结构,允许我们通过节点...
与DOM不同,SAX是基于事件驱动的解析器,它逐行读取XML文档,遇到每个元素、属性或文本时触发相应的事件回调。这种方式节省内存,适合处理大型XML文件。在SAX中,你需要定义一个实现`DefaultHandler`接口的类,然后...
Java 读取 XML 文件是 Java 开发中常见的一项任务,XML(eXtensible Markup Language)作为一种可扩展标记语言,广泛用于数据交换、配置存储等领域。本教程将深入讲解如何在 Java 中处理 XML 文件,同时涉及 XML 的 ...
调用`DocumentBuilder`的`parse()`方法,传入XML文件路径,返回一个`Document`对象。 3. **获取节点列表** 使用`Document`的`getElementsByTagName()`方法,例如`doc.getElementsByTagName("message")`,来获取...
然后,使用`DocumentBuilder`的`parse()`方法加载XML文件并构建`Document`对象,这一步是解析XML文档的关键。 ```java DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = ...
DOM允许开发者在内存中构建、读取、修改和删除XML文档的各个部分,从而实现了对XML数据的高效管理和操作。 #### 节点类型及其特性 在DOM中,不同的XML组件对应着不同类型的节点,每种节点都有其特定的属性和方法。...
总结来说,DOM解析器将整个XML文件加载到内存,适合小型XML文件;DOM4J在DOM的基础上增加了更多功能,易于使用。两者在读写XML时都有其适用场景,根据项目需求选择合适的方法。使用这些库,开发者可以方便地解析XML...
本文将详细介绍如何使用Java来读取和修改XML文件,主要涉及以下几个核心知识点: 1. **DOM解析器**: Document Object Model(DOM)是一种将XML文档转换为内存中的树形结构的方法,使得可以遍历和修改XML文件。...
在Java编程中,XML(可扩展标记语言)是一种被广泛用于数据存储和交换的格式,尤其是在Web服务和配置文件中。本笔记将深入探讨如何使用DOM(文档对象模型)和DOM4J库来创建XML文档。 一、DOM解析器 DOM是W3C推荐的...
Java 解析 XML 文件的 DOM 和 SAX 方式 Java 解析 XML 文件的 DOM 和 SAX 方式是指在 Java 中使用 Document Object Model(DOM)和 Simple API for XML(SAX)两种方式来解析 XML 文件的技术。下面将详细介绍这两种...
在Java中,读取XML文件有多种方法,本文将介绍四种常见的方法:DOM、DOM4J、JDOM和SAX。 DOM(Document Object Model) DOM是W3C组织制定的XML文档对象模型,它提供了对XML文档的树形结构表示。使用DOM方法读取XML...
Java DOM(Document Object Model)是一种基于树形结构的XML文档...尽管DOM操作相对消耗资源,但其灵活性和强大功能使其成为处理XML的常用工具。对于复杂的XML操作,可以结合使用其他库如JAXB或JDOM,以简化编程任务。
DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件
DOM解析器读取整个XML文档到内存中,构建一棵由节点组成的树,这些节点代表了XML文档的所有元素、属性、文本和其他结构。 在Java中,`org.w3c.dom`包提供了DOM解析XML的基础接口和类。以下是DOM解析XML的基本步骤:...
1. **解析XML文档:** 使用DOM4J2,你可以轻松读取XML文件并将其转换为DOM4J的Document对象。这个过程称为解析。例如: ```java SAXReader reader = new SAXReader(); Document document = reader.read(new File...
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
Java语言在处理XML文件时,提供了丰富的API和库,使得我们可以轻松地读取、解析、修改和生成XML文档。在给定的场景中,我们主要关注如何使用Java来读取XML文件并根据需求生成新的文件。以下是关于这个主题的详细说明...