- 浏览: 184230 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (99)
- IT生活 (9)
- Oracle (3)
- java模式 (0)
- j2se (9)
- uml (0)
- javabean (3)
- 网络 (3)
- java 并发 (2)
- java xml (4)
- POI (1)
- jbpm (2)
- apache httpclient (1)
- tomcat (5)
- ssh2 错误 (2)
- mina_xsocket (0)
- struts2 (1)
- easymock (2)
- tomcat远程调试和加入JMS (1)
- eclipse_C/C++ (1)
- 数据结构 (1)
- spring (3)
- 工作记录 (6)
- 学习英语 (1)
- flex4_flexViewer_arcgis (4)
- esb (0)
- java多线程 (3)
- jvm_并发编程 (1)
- 流程 (1)
- 测试 (1)
- terracotta集群 (3)
- jvm_调优_gc_监控命令 (11)
- IT _视频 (1)
- log4jUtil (2)
- jrebel使用 (1)
- lucene-solr (3)
- linux_centos (4)
- hadoop (3)
- 集群部署 (1)
最新评论
-
叮咚可乐名:
Java并发编程和高并发解决方案视频课程网盘地址:https: ...
java处理高并发高负载类网站的优化方法 . -
q8txy8q:
非常不错,thanks.
推荐一些JVM原理,JVM调优,JVM内存模型,JAVA并发 电子书1 -
maimode:
好东西,非常实用
java操作XML文件 dom 篇 -
junJZ_2008:
嗯,就应该这样,常言道:好记性,不如乱笔头~!现在不知道是年纪 ...
第一次写博客
我们需要引入的包:
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
9. xml 文件换成 xml格式的字符串
public String xmltoString(Document doc) { String xmlstring = null;// 储存字符串类型的xml文件 if (doc != null) { StringWriter strWtr = new StringWriter(); StreamResult strResult = new StreamResult(strWtr); TransformerFactory tfac = TransformerFactory.newInstance(); try { Transformer t = tfac.newTransformer(); t.setOutputProperty(OutputKeys.ENCODING, "gb2312"); t.setOutputProperty(OutputKeys.INDENT, "yes"); t.setOutputProperty(OutputKeys.METHOD, "xml"); // xml, html,// // text t.setOutputProperty( "{http://xml.apache.org/xslt}indent-amount", "4"); t.transform(new DOMSource(((org.w3c.dom.Document) doc) .getDocumentElement()), strResult); } catch (Exception e) { System.err.println("XML.toString(Document): " + e); } xmlstring = strResult.getWriter().toString(); } return xmlstring; }
相关推荐
Java与XML联合编程之DOM篇 java中通过documentobjectmodule模型来解析xml文件 diamondsong提供
DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件
java程序中使用dom解析xml文件介绍
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
Java创建xml文档笔记(DOM,DOM4J)
Java使用sax、dom、dom4j解析xml文档的代码,包含dom4j的jar包。
本文档的内容主要是Java语言利用DOM技术对XML进行读写,里面还有实例
使用DOM解析XML文件 Dom解析是将xml文件全部载入,组装成一颗dom树,然后通过节点以及节点之间的关系来解析xml文件。对于特别大的文档,解析和加载整个文档可能很慢且很耗资源 http://www.iteye.com/topic/763926
Java DOM 生成XML,对基本的DOM又封装了一层,使操作XML更简单
xml文件导入到mysql数据库中,包括文件:ConnectionUtils.java,InsertDT.java,db_mysql.properties,test01.xml,需要的jar包dom4j-1.6.1.jar,mysql-connection-java-3.1.1.3-bin.jar,jaxen-1.1-beta-7.jar
java读写xml文档,有实例,dom4j.jar。
java读取xml文件的四种方法: 第一种 DOM 实现方法 第二种 DOM4J实现方法 第三种 JDOM实现方法 第四种SAX实现方法
Java解析XML文件的DOM和SAX方式.doc
在Java平台中如何来使用DOM解析xml文件,
用WC3的DOM实现对XML文件的读取。 方法摘要: //通过文件路径及文件名读取xml public XMLReader(String path, String filename); //初始化读取包下的的XML文件 public XMLReader(Package package1, String fileName)...
java DOM 对xml文件的操作【分别对节点、节点属性、节点内容增删改查】
采用DOM与DOM4j两种方式针对XML文档进行增、删、改查的操作,转换方式在Test测试类中实现另一个管理类就可以了!
dom是W3C规范,比较典型的JAVA操作XML方式,适用于小型文件。 dom4j是开源的性能以及效率最好的,也是一个典型例子。 本源码下下来运行test.java直接运行。 其中包括:采用dom写xml 以及dom方式读XML 采用dom4j写xml...
Java XML文件操作类:Dom4jHelper源代码文件下载,实现的功能:解析url xml文档,遍历解析文档,遍历解析元素,解析文件,获得根元素,修改xml某节点的值,输出文件路径及文件名 如果输出文件为null,则默认为原xml文件,...