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 ...
随机推荐
- Python range() xrange()
range 前面小节已经说明了,range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列. xrange用法与 range 完全 ...
- [转]require(),include(),require_once()和include_once()区别
require(),include(),require_once()和include_once()区别 面试中最容易提到的一个PHP的问题,我想和大家共勉一下: require()和include() ...
- MSSQL-实用小工具
1.创建查询辅助表 create table nums (n int not null) alter table nums add constraint PK_NUMS primary key clu ...
- DE2-115开发板学习(1_时钟信号引脚分配与复位信号的产生)
1.DE2-115开发板资源 Altera EPCS64 Configuration Device 64MB SDRAM (两片) 50MHz Oscillator EP4CE115F29C7(4PL ...
- [wxWidgets] 2. 重访“Hello World” 程序
这是四年多来在博客园的第二篇博客.有了上一次的排版使用经验,这一篇文章应该有些进步(^_^). 闲话按下不表,言归正传.在编译.成功运行了上一个helloWorld.cpp(后文中'hw'简称hell ...
- 基于Cloud Foundry平台部署nodejs项目上线
Cloud Foundry(以下简称CF),CF是Vmware公司的PaaS服务平台,Paas(Platform as a Service,平台即服务), 是为开发者提供一个应用运行的平台,有了这人平 ...
- Codeforces Round #377 (Div. 2) D. Exams(二分答案)
D. Exams Problem Description: Vasiliy has an exam period which will continue for n days. He has to p ...
- 关于print和echo的区别
我的想法是print是函数,echo是语句.有一个点很难去说明就是为什么可以执行print 666.可以这样不加括号,象print(666);至于为什么一定要认为print是函数,而非网上说的语句和函 ...
- Django 之 ForeignKey、ManyToMany的访问方式
1.ForeignKey 情况I: from django.db import models class Blog(models.Model): pass class Entry(models.Mod ...
- git usage:常用git命令
最近在改TV media相关的测试用例,需要在git上维护相关的脚本,把常用命令总结如下,方便以后使用. 1. 从已有git服务器上clone到本地, 首先进入用户根目录: cd ~ 然后进行clon ...