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. ...
随机推荐
- 在VMware安装Windows server 2003操作系统帮助文档
在VMware上安装Windows server 2003操作系统,及VMware上三种网络连接模式(以VMware 10为例) 一.在Windows上安装VMware 10虚拟机软件 1.首先在Wi ...
- 足迹地图 搜索jvectormap
https://blog.wangjunfeng.com/foot_print/
- 【JZOJ4896】【NOIP2016提高A组集训第16场11.15】兔子
题目描述 在一片草原上有N个兔子窝,每个窝里住着一只兔子,有M条路径连接这些窝.更特殊地是,至多只有一个兔子窝有3条或更多的路径与它相连,其它的兔子窝只有1条或2条路径与其相连.换句话讲,这些兔子窝之 ...
- SQLServer → 09:索引
一.索引概念 用途 我们对数据查询及处理速度已成为衡量应用系统成败的标准,而采用索引来加快数据处理速度通常是最普遍采用的优化方法. 概念 索引是一个单独的,存储在磁盘上的数据结构,它们包含则对数据表里 ...
- BigDecimal创建初始化值类型对比
当初始化String类型和double类型,入参值相同,对比输出值 BigDecimal bigDecimalStr = new BigDecimal("0.1"); BigDec ...
- 利用幂等性区分HTTP的POST与PUT请求
1.什么是幂等性 幂等性概念:幂等通俗来说是指不管进行多少次重复操作,都是实现相同的结果. 2.REST请求中哪些是幂等操作 GET,PUT,DELETE都是幂等操作,而POST不是,以下进行分析: ...
- Directx11教程(34) 纹理映射(4)
原文:Directx11教程(34) 纹理映射(4) 本篇教程中,我们尝试在myTutorialD3D_27中改变采样状态描述符的各种设置,看纹理贴图的方式有什么变化. 原始的代码是: ...
- 显示调用dll
原dll中导出的接口如图: Head.h: struct zint_render_line { float x, y, length, width; struct zint_render_line * ...
- 支付宝sdk iOS 集成
1添加支付宝源文件和库文件AlipayOrder.h AlipayOrder.m AlipayResult.h AlipayResult.m AlixLibService.h ...
- weixin 微信开放平台 微信公众平台
官网地址入口 微信小程序 https://mp.weixin.qq.com/ appid and openid not match 1.appid :是公众号的ID. 2.openid:关注公众号生成 ...