XML文件test.xml:
<?xml version="1.0" encoding="UTF-8"?><books><book><name>哈里波特</name><price>10</price><memo>这是一本很好看的书。</memo></book></books>
java代码:
import java.io.*;
import java.net.URI;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import com.sun.org.apache.xml.internal.serialize.*;
/**
* DOM方式操作XML
*
* @author Watson Xu
* @date 2011-5-3 上午09:49:27
*/
public class OperateXMLByDOM {
/**
* 将给定文件的内容或者给定 URI 的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象
*
* @param filePath 文件所在路径
* @return DOM的Document对象
* @throws Exception
*/
public static Document xml2Doc(String filePath) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
FileInputStream inputStream = null;
Document doc = null;
try {
builder = factory.newDocumentBuilder();
/* 通过文件方式读取,注意文件保存的编码和文件的声明编码要一致(默认文件声明是UTF-8) */
File file = new File(filePath);
doc = builder.parse(file);
/* 通过一个URL方式读取 */
URI uri = new URI(filePath);//filePath="http://java.sun.com/index.html"
doc = builder.parse(uri.toString());
/* 通过java IO 流的读取 */
inputStream = new FileInputStream(filePath);
doc = builder.parse(inputStream);
return doc;
} catch (Exception e) {
return null;
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
return null;
}
}
}
}
/**
* Document 转换为 String 并且进行了格式化缩进
*
* @param doc XML的Document对象
* @return String
*/
public static String doc2FormatString(Document doc) {
StringWriter stringWriter = null;
try {
stringWriter = new StringWriter();
if(doc != null){
OutputFormat format = new OutputFormat(doc,"UTF-8",true);
//format.setIndenting(true);//设置是否缩进,默认为true
//format.setIndent(4);//设置缩进字符数
//format.setPreserveSpace(false);//设置是否保持原来的格式,默认为 false
//format.setLineWidth(500);//设置行宽度
XMLSerializer serializer = new XMLSerializer(stringWriter,format);
serializer.asDOMSerializer();
serializer.serialize(doc);
return stringWriter.toString();
} else {
return null;
}
} catch (Exception e) {
return null;
} finally {
if(stringWriter != null){
try {
stringWriter.close();
} catch (IOException e) {
return null;
}
}
}
}
/**
* Document 转换为 String
*
* @param doc XML的Document对象
* @return String
*/
public static String doc2String(Document doc){
try {
Source source = new DOMSource(doc);
StringWriter stringWriter = new StringWriter();
Result result = new StreamResult(stringWriter);
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(source, result);
return stringWriter.getBuffer().toString();
} catch (Exception e) {
return null;
}
}
/**
* String 转换为 Document 对象
*
* @param xml 字符串
* @return Document 对象
*/
public static Document string2Doc(String xml) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
Document doc = null;
InputSource source = null;
StringReader reader = null;
try {
builder = factory.newDocumentBuilder();
reader = new StringReader(xml);
source = new InputSource(reader);//使用字符流创建新的输入源
doc = builder.parse(source);
return doc;
} catch (Exception e) {
return null;
} finally {
if(reader != null){
reader.close();
}
}
}
/**
* Document 保存为 XML 文件
*
* @param doc Document对象
* @param path 文件路径
*/
public static void doc2XML(Document doc, String path) {
try {
Source source = new DOMSource(doc);
Result result = new StreamResult(new File(path));
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(source, result);
} catch (Exception e) {
return;
}
}
public static void main(String[] args) {
Document doc = xml2Doc("test.xml");
System.out.println(doc);
System.out.println(doc2String(doc));
System.out.println(doc2FormatString(doc));
doc = string2Doc(doc2FormatString(doc));
doc2XML(doc, "1.xml");
}
}
输出的XML文件1.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<books>
<book>
<name>哈里波特</name>
<price>10</price>
<memo>这是一本很好看的书。</memo>
</book>
</books>
分享到:
相关推荐
用WC3的DOM实现对XML文件的读取。 方法摘要: //通过文件路径及文件名读取xml public XMLReader(String path, String filename); //初始化读取包下的的XML文件 public XMLReader(Package package1, String fileName)...
生成XML文件ABAP程序 REPORT zams_xml_dom_create . TYPE-POOLS: ixml. CLASS cl_ixml DEFINITION LOAD. TYPES: BEGIN OF xml_line, data(256) TYPE x, END OF xml_line. DATA: l_ixml TYPE REF TO if_ixml, ...
// SAXReader就是一个管道,用一个流的方式,把xml文件读出来 // // SAXReader reader = new SAXReader(); //User.hbm.xml表示你要解析的xml文档 // Document document = reader.read(new File("User.hbm.xml")...
该项目采用dom4j从数据库表中生成xml数据 项目文档、数据库建表语句均已放置在项目中。 关键代码如下: public String getXml(Connection conn, int rm_id, String path) { //声明xml字符串 String file...
使用dom4j读写XML文档 1.获取文档的根节点. Element rootElm = document.getRootElement(); 2.取得某节点的单个子节点. Element memberElm=root.element("member");// "member"是节点名 3.取得节点的文字 String ...
1.读取XML文件,获得document对象. SAXReader reader = new SAXReader(); Document document = reader.read(new File("input.xml")); 2.解析XML形式的文本,得到document对象. String text = "<members></...
根据xml文件的名字获取Document对象。 * * @param file * 要获取对象的xml文件全路径。 * @return 返回获取到的Document对象。 * @throws IOException * 如果发生任何 IO 错误时抛出此异常。 * @...
因为没有办法完全自动进行转换,我们可以应用dwr.xml文件的special signatures syntax配置部分设置类型的转换处理过程. 2.5 DOM Objects DWR 自动将DOM、DOM4J、JDOM和XOM转换成DOM树,前面这几种类型都仅仅返回...
public static Document parse( String xmlFile ) throws Exception { // 绑定XML文件,建造DOM树 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf....
dom4j目前我用过这个jar包解析过XML中的CDATA,其他的还在学习中。 我的代码: public static String GetCDATA(String strXml) { SAXReader reader = new SAXReader(); String strJson = "[]"; try { Document ...
} <br> /** * 修改XML文件中内容,并另存为一个新文件 * 重点掌握dom4j中如何添加节点,修改节点,删除节点 * @param filename 修改对象文件 * @param newfilename 修改后另存为该文件 * @...
XSLT,是用于对XML进行文档格式转换,把一个XML文档转换成另一种格式的XML文档,但是其中内容是不变的。 &2.DTD(Document Type Difinition DTD文档是用于规定XML文档的结构。只有结构符合所引用的DTD文件的XML文件...
a、DOMDocument->load()作用:加载xml文件用法:DOMDocument->load( string filename )参数:filename,xml文件;返回:如果成功则返回 TRUE,失败则返回 FALSE。 b、DOMDocument->loadXML()作用:加载xml代码用法:...
TinyXML支持UTF-8,所以可以处理任何语言的XML文件,而且TinyXML也支持“legacy模式”——一种在支持UTF-8之前使用的编码方式,可能最好的解释是“扩展的ascii”。 正常情况下,TinyXML会检测出正确的编码并使用它...
自己写的一个操作xml文件的类,可以把节点存入实体对象,也可以把实体对象插入xml文件,以及很多查询方法 返回类型全是String或List<String>、Map<String,String>等
1.读取XML文件,获得document对象. SAXReader reader = new SAXReader(); Document document = reader.read(new File("input.xml")); 2.解析XML形式的文本,得到document对象. String text = "<members></...
// 把要解析的XML文档转化为输入流,以便DOM解析器解析它 InputStream is = new FileInputStream("test.xml"); // 解析XML文档的输入流,得到一个Document Document doc = dombuilder.parse(is); // 得到XML...
XMLDOM xmldom 是一个 javascript 用于浏览器支持的以下 API: 将 XML 字符串转换为 DOM 树( new DOMParser().parseFromString(xml, mimeType) => Document ) 创建、访问和修改 DOM 树( new DOMImplementation()....
String fromRead=Dom4jTest2.class.getClassLoader().getResource("xml/map1.xml").getPath(); List<Pois> list=new ArrayList(); SAXReader saxReader = new SAXReader(); org.dom4j.Document document=...
SAXReader对象调用read方法,将当前XML文件,转换为Document对象 document = reader.read(file); 4. 获取根节点 root = document.getRootElement(); 5. 通过父签添加子标签(元素) ...