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. Linux下的MySQL主从同步

    网上一些关于Linux下的MySQL主从同步教程非常之多,有些很简单的配置却弄的非常复杂,有些根本无法配通,下面是我通过简单的配置完成的主从同步过程,大家可以参考,此文章更适用于新手. 一.测试环境: ...

  2. C++ fstream文件操作

    代码如下: #include "stdafx.h" #include<string> #include<iostream> //是因为要使用cout #in ...

  3. 编码之Base64编码

    Base64编码 是一种基于 64 个可打印字符来表示二进制数据的方法.目前 Base64 已经成为网络上常见的传输 8 位二进制字节代码的编码方式之一. 为什么会有 Base64 编码呢?因为有些网 ...

  4. java 3 接口与多态&输入输出流

    接口 中的所有方法都是方法 抽象 使用接口实现多继承 类型的装换 数据成员就变成了static 和 final food 和 snow 都是可以吃的 可以同时实现多个接口 接口与接口之间也可以有继承关 ...

  5. Linux常用命令6 压缩解压命令

    .zip是Linux和Windows共有的压缩格式 1.压缩解压命令:gzip 命令英文原意:GNU zip   命令所在路径:/bin/gzip 执行权限:所有用户 语法: gzip [文件]   ...

  6. IE下的双外边距浮动bug

    最常见且最容易发现的额一个bug是IE 6和最低版本中的双外边距浮动bug.这个bug是任何浮动元素上的外边距加倍. 上面代码中,div盒子向左边浮动,设置的margin-left的值是10px.在c ...

  7. MySQL主备模式的数据一致性解决方案

     根据阿里交易型业务的特点,以及在双十一这样业内罕有的需求推动下,我们在官方的MySQL基础上增加了非常多实用的功能.性能补丁.而在使用MySQL的过程中,数据一致性是绕不开的话题之一.本文主要从阿里 ...

  8. Apache CarbonData1.3简介

    CarbonData是一种高性能大数据存储方案,支持快速过滤查找和即席OLAP分析,已在20+企业生产环境上部署应用,其中最大的单一集群数据规模达到几万亿.针对当前大数据领域分析场景需求各异而导致的存 ...

  9. hdu5289 RMQ+二分

    RMQ预处理最大值,最小值,然后对于每一点,二分可能满足的区间长度,长度-1就是该店开始的区间满足的个数. #include<stdio.h> #include<string.h&g ...

  10. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第六章:在Direct3D中绘制

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第六章:在Direct3D中绘制 代码工程地址: https://gi ...