java DOM 操作xml
1 代码如下:
package dom.pasing; import java.io.IOException;
import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text; public class DOMTest { /**
*
* @return
*/
public static Document createDocument() { Document document = null; try {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
document = builder.newDocument();
Element root = document.createElement("students");
document.appendChild(root); /**
* <students>
* <student sn="01">
* <name>张三</name>
* <age>19</age>
* </student>
* </students>
*/
Element stuEle = document.createElement("student"); Attr attr = document.createAttribute("sn");
attr.setValue("01");
stuEle.setAttributeNode(attr); Element nameElem = document.createElement("name");
Text txtName = document.createTextNode("张三");
nameElem.appendChild(txtName);
stuEle.appendChild(nameElem); Element ageElem = document.createElement("age");
Text txtAge = document.createTextNode("19");
ageElem.appendChild(txtAge);
stuEle.appendChild(ageElem);
document.getDocumentElement().appendChild(stuEle); //在文档根元素节点studnets下,添加一个student元素节点 /**
* 创建节点
* <student>
* <name>李四</name>
* <age>24</age>
* </student>
*/
Element stuEle2 = document.createElement("student"); Attr attr2 = document.createAttribute("sn");
attr2.setValue("02");
stuEle2.setAttributeNode(attr2); Element nameEle2 = document.createElement("name");
Text txtName2 = document.createTextNode("李四");
nameEle2.appendChild(txtName2);
stuEle2.appendChild(nameEle2); Element ageEle2 = document.createElement("age");
Text txtAge2 = document.createTextNode("24");
ageEle2.appendChild(txtAge2);
stuEle2.appendChild(ageEle2);
document.getDocumentElement().appendChild(stuEle2); //在文档根元素节点studnets下,添加一个student元素节点
} catch (ParserConfigurationException e) {
e.printStackTrace();
} return document;
} public static void alterDocument(Document document) {
NodeList nodeList = document.getElementsByTagName("student");
Node node = nodeList.item(0);
node.getParentNode().removeChild(node); //移除第1个student元素节点
} /**
* 转换DOM为String
* @param document
* @return
* @throws TransformerException
*/
public static String documentToStr(Document document) { String result = null; try {
DOMSource source = new DOMSource(document);
StringWriter stringWriter = new StringWriter();
StreamResult streamResult = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //默认的缩进量长度为0
transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
transformer.transform(source, streamResult); result = stringWriter.toString();
} catch (TransformerException e) {
e.printStackTrace();
}
return result;
} /**
*
* @param document
* @return
*/
public static String documentToIndentStr(Document document) { String result = null; try { StringWriter stringWriter = new StringWriter(); OutputFormat format = new OutputFormat(document);
format.setLineWidth(100);
format.setIndenting(true);
format.setIndent(4); XMLSerializer serializer = new XMLSerializer(stringWriter, format);
serializer.serialize(document); result = stringWriter.toString();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
} public static void main(String[] args) { String rslt = null; Document document = createDocument(); rslt = documentToIndentStr(document); System.out.println(rslt);
}
} 输出结果:
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student sn="01">
<name>张三</name>
<age>19</age>
</student>
<student sn="02">
<name>李四</name>
<age>24</age>
</student>
</students>
java DOM 操作xml的更多相关文章
- org.w3c.dom(java dom)解析XML文档
位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想 首先来了解点Java DOM 的 API:1.解析 ...
- 精讲 org.w3c.dom(java dom)解析XML文档
org.w3c.dom(java dom)解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会 ...
- php中通过DOM操作XML
DOM文档在js里早就接触过,知道DOM不但可以操作html文档,还可以操作XHTML,XML等文档,有着极强的通用性,下面我们通过两个小例子,看看在PHP中是如何用DOM操作XML文档的,和js中差 ...
- php : DOM 操作 XML
DOM 操作 XML 基本用法 XML文件: person.XML <?xml version="1.0" encoding="utf-8" ?> ...
- Java Dom对XML的解析和修改操作
与Dom4J和JDom对XML的操作类似,JDK提供的JavaDom解析器用起来一样方便,在解析XML方面Java DOM甚至更甚前两者一筹!其不足之处在于对XML的增删改比较繁琐,特开篇介绍... ...
- Java用DOM操作xml
JAXP DOM方式解析XML文档实例增删改查package jiexi; import javax.xml.parsers.DocumentBuilder; import javax.xml.par ...
- java使用DOM操作XML
XML DOM简介 XML DOM 是用于获取.更改.添加或删除 XML 元素的标准. XML 文档中的每个成分都是一个节点. DOM 是这样规定的: 整个文档是一个文档节点 每个 XML 标签是一个 ...
- Java Stax操作XML简介
使用stax操作xml 非常的简单,它的读取过程像是一个光标在移动.针对不同的节点做不同的处理. 先看一个基于光标的模型处理xml: public class StaxTest { @Test pub ...
- 摘抄的 JAVA JDOM 操作XML文件
JDOM修炼篇 用过XERCES的程序员都会感到,有时候用一句话就可以说清楚的事,当用XERCES的API来实现时,要三四行程序. 回页首 获得并安装JDOM 在 http://www.jdom. ...
随机推荐
- 【JZOJ5064】【GDOI2017第二轮模拟day2】友好城市 Kosarajo算法+bitset+ST表+分块
题面 在Byteland 一共有n 座城市,编号依次为1 到n,这些城市之间通过m 条单向公路连接. 对于两座不同的城市a 和b,如果a 能通过这些单向道路直接或间接到达b,且b 也能如此到达a,那么 ...
- 常用css3属性
总结一下在工作用常用到的属性设置 1.设置文本的可选择性 -webkit-user-select:none/text 2.设置背景的绘制区域 background-clip:border-box/pa ...
- Ubuntu查找通过apt命令已安装软件
方法一 apt list --installed 方法二 dpkg -l
- php各种字符串截取
各种字符串截取.php <?php /** * 字符串截取,支持中文和其他编码 * @param [string] $str [字符串] * @param integer $start [起始位 ...
- 修改mysql数据库密码的3中方法
方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass ...
- TCP keepalive的机理及使用
TCP 是面向连接的 , 在实际应用中通常都需要检测对端是否还处于连接中.如果已断开连接,主要分为以下几种情况: 1.连接的对端正常关闭,即使用 closesocket 关闭连接. 2.连接的对端非正 ...
- Linux安装JDK和Tomcat
步骤如下: 1)在/root用户下建立jdk和tomcat两个文件夹并上传jdk-7u80-linux-x64.rpm和apache-tomcat-7.0.82.zip 2)安装jdk # rp ...
- RocksDB 之Write Ahead Log(WAL)
Overview RocksDB 中有三个基本的数据结构概念:memtable, sstfile 和 logfile memtable 是个内存数据结构,新写入会插入memtable 切回选择性地写入 ...
- 如何写JavaScript中的callback回调函数
如何写回调函数? 如果自己在写一个方法或函数,你有可能会遇到需要一个回调函数.下面就是一个简单的常见回调函数例子: function mySandwich(param1, param2, callba ...
- 2015全球商业地产商影响力排行TOP10:中国占据5个
2015全球商业地产商影响力排行TOP10:中国占据5个 1.西蒙丨依然最有影响力 发展概况:西蒙公司是北美商业地产(专题阅读)的王者,美最大商业地产REITS,1960年最初只以开发为主,1993年 ...