xml ---DOM操作
package day03.xml; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List; import javax.xml.crypto.dsig.Transform;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult; import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException; //使用dom方式对xml进行crud
public class Demo3 {
@Test
public void read() throws ParserConfigurationException, SAXException, IOException{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document document=(Document) builder.parse("src/2.xml");
NodeList list=document.getElementsByTagName("soft");
Node node = list.item(1);
String content = node.getTextContent();
System.out.println(content);
}
@Test
public void read1() throws ParserConfigurationException, SAXException, IOException{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document document=builder.parse("src/2.xml"); //获得根结点
Node root=document.getElementsByTagName("soft").item(0);
list(root);
}
private void list(Node node){
if(node instanceof Element){
System.out.println(node.getNodeName());
}
NodeList list=node.getChildNodes();
for(int i=0;i<list.getLength();i++){
Node child=list.item(i);
list(child);
}
}
@Test
//得到name属性内容
public void read3() throws ParserConfigurationException, SAXException, IOException{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document document=builder.parse("src/2.xml");
Element bookname=(Element) document.getElementsByTagName("soft").item(0);
String value =bookname.getAttribute("name");
System.out.println(value); }
@Test
//向xml中添加节点<雪>22222<雪>
public void add1() throws ParserConfigurationException, SAXException, IOException, TransformerException{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document document=builder.parse("src/2.xml");
//创建节点
Element price=document.createElement("雪");
price.setTextContent("22222"); //把创建的节点挂到第一本书上
Element book=(Element) document.getElementsByTagName("a").item(0);
book.appendChild(price); //把更新的内容重新写入xml文件里
TransformerFactory transform =TransformerFactory.newInstance();
Transformer tf=transform.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/2.xml"))); }
@Test
//向xml中添加节点在<a2>22222</a2>前
public void add2() throws ParserConfigurationException, SAXException, IOException, TransformerException{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document document=builder.parse("src/2.xml");
//创建节点
Element price=document.createElement("a3");
price.setTextContent("a222222before"); //参考节点
Element renode=(Element) document.getElementsByTagName("a2").item(0);
//得到要挂的节点
Element book=(Element) document.getElementsByTagName("a").item(0);
//往book节点的制定位置插入
book.insertBefore(price,renode);
//把更新的内容重新写入xml文件里
TransformerFactory transform =TransformerFactory.newInstance();
Transformer tf=transform.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/2.xml"))); }
@Test
//向xml中<a2>22222</a2>节点添加name属性=“xxxxx”
public void add3() throws ParserConfigurationException, SAXException, IOException, TransformerException{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document document=builder.parse("src/2.xml"); //取得节点
Element bookname =(Element) document.getElementsByTagName("a2").item(0);
bookname.setAttribute("name","XXXXXX"); //把更新的内容重新写入xml文件里
TransformerFactory transform =TransformerFactory.newInstance();
Transformer tf=transform.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/2.xml"))); } }
<?xml version="1.0" encoding="UTF-8" standalone="no"?><soft name="snowing">
<a>
<a1>中国</a1>
<a3>a222222before</a3>
<a2 name="XXXXXX">ssssss</a2>
<雪>22222</雪>
</a>
<b>
<b1/>
<b2/>
<雪莹>879</雪莹>
</b>
</soft>
xml ---DOM操作的更多相关文章
- XML DOM操作,适用目前流行的浏览器
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- 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" ?> ...
- DOM操作XML文件
一.IE中的XML(IE低版本才支持) 在统一的正式规范出来以前,浏览器对于 XML 的解决方案各不相同.DOM2 级提出了动态创建 XML DOM 规范,DOM3 进一步增强了 XML DOM. 所 ...
- PHP通过DOM操作XML
PHP XML操作类DOMDocument属性及方法 注意大小写一定不能弄错. 属性: Attributes 存储节点的属性列表(只读) childNodes 存储节点的子节点列表(只读) dataT ...
- java使用DOM操作XML
XML DOM简介 XML DOM 是用于获取.更改.添加或删除 XML 元素的标准. XML 文档中的每个成分都是一个节点. DOM 是这样规定的: 整个文档是一个文档节点 每个 XML 标签是一个 ...
- XML DOM (Document Object Model) 定义了访问和操作 XML 文档的标准方法。
XML DOM DOM 把 XML 文档视为一种树结构.通过这个 DOM 树,可以访问所有的元素.可以修改它们的内容(文本以及属性),而且可以创建新的元素.元素,以及它们的文本和属性,均被视为节点. ...
- HTML 学习笔记 JQuery(DOM 操作)
一般来说,DOM操作分为三个方面,即:DOM Core(核心), HTML_DOM 和 CSS_DOM. 1.DOM Core DOM Core 并不专属于JavaScript,任何一种支持DOM的程 ...
- jQuery的DOM操作详解
DOM(Document Object Model-文档对象模型):一种与浏览器, 平台, 语言无关的规则, 使用该接口可以轻松地访问页面中所有的标准组件DOM操作的分类 核心-DOM: DOM Co ...
随机推荐
- DELPHI 各版本下载
各版本中国下载地址: http://pan.baidu.com/s/1eQ1QGy2 http://pan.baidu.com/s/1qWK3mw8 (有新版本发布时,会同步最新官网地址) ───── ...
- asp.net环境搭建
win7 开启internet infornation server 勾选相应配置 管理设置里,新增网站,对网站进行配置,设置用户验证连接 根目录下,配置文件web.config
- 双系统 fedora 恢复引导
因为硬盘坏了,所以买了个固态的用用. 先装windows,再装fedora及常用必备的驱动软件装上. 快要完成了心情都挺好,可是在一次关机时window7关机很慢一直在删索引,我嫌时间太长,直接按电源 ...
- <<Numerical Analysis>>笔记
2ed, by Timothy Sauer DEFINITION 1.3A solution is correct within p decimal places if the error is l ...
- DHTMLX-第一弹
DHTMLX 半年前结束了漂泊的工作生活回到了公司,跟着团队开发新产品.忙碌起来就很少有时间静下来好好写点东西.公司既然要开发新的产品当然也会接触一些新的东西,也会面临新的挑战.接下来就将项目前端所用 ...
- Node.js的process.nextTick(callback)理解
Node.js是单线程的,基于事件循环,非阻塞 IO的.事件循环中使用一个事件队列,在每个时间点上,系统只会处理一个事件,即使电脑有多个CPU核心,也无法同时并行的处理多个事件.因此,node.js适 ...
- SQL: ROW_NUMBER
- sublime text 3 license 2016.05
补充:2016.05 最近经过测试,3个注册码在新版3103的sublime上已经不可用了. 现补充两枚新版的license key: -– BEGIN LICENSE -– Michael Barn ...
- gtest学习一:在vs2013中搭建gtest环境
gtest版本:1.7.0,在哪里下载源码就不说了,网上太多了~ 配置过程: 1.下载解压后,进入googletest/msvc目录,直接打开gtest.sln,发现有四个工程:gtest.gtest ...
- WCF配置
服务端 <system.serviceModel> <services> <service name="WCF.Homedo.Service.Cache.Ser ...