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的更多相关文章

  1. org.w3c.dom(java dom)解析XML文档

    位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想 首先来了解点Java DOM 的 API:1.解析 ...

  2. 精讲 org.w3c.dom(java dom)解析XML文档

    org.w3c.dom(java dom)解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会 ...

  3. php中通过DOM操作XML

    DOM文档在js里早就接触过,知道DOM不但可以操作html文档,还可以操作XHTML,XML等文档,有着极强的通用性,下面我们通过两个小例子,看看在PHP中是如何用DOM操作XML文档的,和js中差 ...

  4. php : DOM 操作 XML

    DOM 操作 XML 基本用法 XML文件: person.XML <?xml version="1.0" encoding="utf-8" ?> ...

  5. Java Dom对XML的解析和修改操作

    与Dom4J和JDom对XML的操作类似,JDK提供的JavaDom解析器用起来一样方便,在解析XML方面Java DOM甚至更甚前两者一筹!其不足之处在于对XML的增删改比较繁琐,特开篇介绍... ...

  6. Java用DOM操作xml

    JAXP DOM方式解析XML文档实例增删改查package jiexi; import javax.xml.parsers.DocumentBuilder; import javax.xml.par ...

  7. java使用DOM操作XML

    XML DOM简介 XML DOM 是用于获取.更改.添加或删除 XML 元素的标准. XML 文档中的每个成分都是一个节点. DOM 是这样规定的: 整个文档是一个文档节点 每个 XML 标签是一个 ...

  8. Java Stax操作XML简介

    使用stax操作xml 非常的简单,它的读取过程像是一个光标在移动.针对不同的节点做不同的处理. 先看一个基于光标的模型处理xml: public class StaxTest { @Test pub ...

  9. 摘抄的 JAVA JDOM 操作XML文件

    JDOM修炼篇 用过XERCES的程序员都会感到,有时候用一句话就可以说清楚的事,当用XERCES的API来实现时,要三四行程序.   回页首 获得并安装JDOM 在 http://www.jdom. ...

随机推荐

  1. Matlab 稀疏矩阵函数

    eye 单位矩阵zeros 全零矩阵ones 全1矩阵rand 均匀分布随机阵genmarkov 生成随机Markov矩阵linspace 线性等分向量logspace 对数等分向量logm 矩阵对数 ...

  2. Idea下面无法识别web-inf下lib目录的子目录的jar包,只能直接放lib下面才能识别?

    解决方案一: Ctrl+Alt+Shift+s打开projuect Structure-->Livraries-->➕-->java-->选择对应的lib目录即可! 解决方案二 ...

  3. php实现图片以base64显示的方法达到效果

    目前Data URI scheme支持的类型有: data:text/plain,文本数据data:text/html,HTML代码data:text/html;base64,base64编码的HTM ...

  4. SPSS和Mplus如何做非线性中介调节效应分析?如倒U形曲线

    SPSS和Mplus如何做非线性中介调节效应分析?如倒U形曲线 传统的线性回归模型用的比较多,但有时候变量之间的关系更符合非线性关系,此时使用非线性模型其拟合度会更好,模型预测效果更佳.在非线性关系中 ...

  5. No.4 Verilog 表达式

    4-1 操作数 常数.参数.线网.变量.位选.存储器.数组. *部分位选: integer mark; :] inst; :] gpio; inst[mark+ : ] //选择 mark,mark+ ...

  6. JasperStudio 输出pdf 出错。

    发表于 2008-09-23 09:35:15 楼主net.sf.jasperreports.engine.JRException: Error retrieving field value from ...

  7. Hibernate中的Session对象 标签: hibernatesession 2017-01-22 22:10 238人阅读 评论(

    Hibernate中的Session 大家在看hibernate视频的时候一定都发现了,每次要操作数据库,总是要新建一个session对象,Hibernate在对资料库进行操作之前,必须先取得Sess ...

  8. docker出现如下错误:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

    在docker中配置deepo时出现了错误: 在出现这个错误之前,我是先用如下命令查看NVIDIA-docker是否安装成功. docker run --runtime=nvidia --rm nvi ...

  9. js全局方法

    1.eval() 参数:string要计算的表达式或要执行的语句 返回值:计算结果或者执行结果 使用方法: (1)eval("2+2")返回值:4 (2)eval("x= ...

  10. html的select标签清空option!~~~~

    最好的方法:document.getElementById("selectId").length = 1; 也可以document.getElementById("sel ...