- 浏览: 148056 次
- 性别:
- 来自: 辽宁
最新评论
-
bubble:
GlennZhou 写道 我就是要这个,从去年腊月找到现在。。 ...
一个模拟的带图片的下拉框—星级选择 -
GlennZhou:
我就是要这个,从去年腊月找到现在。。。。终于~~~
一个模拟的带图片的下拉框—星级选择 -
bubble:
我准备把帖子删掉算了,心寒啊。
qiaoakai 写道Very ...
用ruby写的一个网络爬虫程序 -
tianyuzhu:
原来如此,
用ruby写的一个网络爬虫程序 -
hc_face:
我还不会用隐藏贴,但是我在学ruby,敬佩楼主的贡献精神,学习 ...
用ruby写的一个网络爬虫程序
我们需要引入的包:
import
java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.dom. DOMSource ;
import javax.xml.transform.stream.StreamResult;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.InputSource;
import javax.xml.transform.*;
import javax.xml.transform.dom. DOMSource ;
import javax.xml.transform.stream.StreamResult;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.InputSource;
/**
* 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;
}
* 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;
}
* 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;
}
* 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;
}
* 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;
}
* 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" );
}
* 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();
}
}
* 演示手动创建一个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());
}
}
}
}
}
* 演示读取文件的具体某个节点的值
*/
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" );
}
* 演示修改文件的具体某个节点的值
*/
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" );
}
----------------------JoeCom 2006-11-12
原文地址 http://cache.baidu.com/c?word=%BD%AB%3Bdomsource%3B%D7%AA%BB%AF%3B%CE%AA%3Bstring&url=http%3A//hi%2E
发表评论
-
JTree使用要点
2010-10-01 05:51 1709引自:http://jeremyway.bokee.com/3 ... -
JTree 不同叶子节点图标
2010-09-30 15:46 3934引自:http://blog.csdn.net/jimmy29 ... -
总结DetachedCriteria级联查询
2009-07-02 13:35 3812如果实体对象中没有关 ... -
总结如何让FireFox3安装不兼容插件
2008-11-16 18:03 2083第一种是关闭插件版本冲突自动检测 方法: 更改Firefox的 ... -
关于乱码的问题的总结
2008-01-14 20:02 3339刚才看到有朋友问关于乱码的问题!我在开发过程中也遇到此类问题, ... -
xsl中有&,<,>这样的特殊字符如何处理
2007-11-25 10:26 6860xsl文件如下: <?xml version=" ... -
以前没用struts的时候我们这样自己封装bean(超级简化版的bean数据封装)
2007-07-11 12:59 4019没有用struts的时候这样做也很方便,呵呵,屡试不爽,超级简 ... -
写的作业,关于生产者消费者
2007-05-11 12:33 3318java 代码 Class prodct{}/ ... -
在网上收集的一些很有用的小工具
2006-12-20 09:38 9772thinkbox ThickBox 2.0——JS ...
相关推荐
如果处理的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文件;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文件并根据需求生成新的文件。以下是关于这个主题的详细说明...