Java用DOM操作xml
JAXP DOM方式解析XML文档实例
增删改查
package jiexi; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList; //JAXP DOM方式解析XML文档实例
public class JaxpCRUD {
public static void main(String[] args) throws Exception {
//1,得到解析器DocumentBuilder
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
//2,得到代表整个xml文档的Document对象
Document document=db.parse("src/book.xml");
test1(document);
}
//1、得到具体节点的内容
public static void test1(Document document){//得到第二本书的售价
NodeList list=document.getElementsByTagName("售价");
int length=list.getLength();//获得元素节点的个数
System.out.println(length);
Node node=list.item(1);//角标从0开始
System.out.println(node.getTextContent()); }
//2、遍历所有元素节点
public static void test2(Node node){
//1,判断node是否是元素节点,如果是,打印该节点
if(node.getNodeType()==Node.ELEMENT_NODE ){//判断是否是元素节点
System.out.println(node.getNodeName());
}
//2,判断是否有孩子节点
NodeList children=node.getChildNodes();
for(int i=0;i<children.getLength();i++){
Node n=children.item(i);
test2(n);//3,递归调用
}
}
//3、修改某个元素节点的主题内容
//将第一本书的售价改为49元
public static void test3(Document document)throws Exception{
//1,找到第一本书的售价节点
NodeList list=document.getElementsByTagName("售价");
Node node=list.item(0);
//2,将主题内容改为49元
node.setTextContent("49元");
//3,更新设置
Transformer ts = TransformerFactory.newInstance().newTransformer();
ts.transform(new DOMSource(document), new StreamResult("src/book.xml"));
}
//4、向指定元素节点中增加子元素节点
//向第一本书中添加节点<优惠价>39</优惠价>
public static void test4(Document document)throws Exception{
//1,找到增加节点处的父级元素
Node node=document.getElementsByTagName("书").item(0);
//2,创建节点,并添加主体内容
Element ele=document.createElement("优惠价");
ele.setTextContent("39元");
//3,节点添加到父级元素中
node.appendChild(ele);
//4,更新设置
Transformer ts=TransformerFactory.newInstance().newTransformer();
ts.transform(new DOMSource(document), new StreamResult("src/book.xml"));
}
//5、向指定元素节点上增加同级元素节点
//向第二本书中添加优惠价
public static void test5(Document document)throws Exception{
//1,找到添加元素的兄弟节点
Node node=document.getElementsByTagName("售价").item(1);
//2,创建节点,并添加内容
Element ele=document.createElement("优惠价");
ele.setTextContent("18元");
//3,节点添加
node.getParentNode().appendChild(ele);
//4,更新设置
Transformer ts=TransformerFactory.newInstance().newTransformer();
ts.transform(new DOMSource(document), new StreamResult("src/book.xml"));
}
//6、删除指定元素节点
//删除优惠价
public static void test6(Document document)throws Exception{
//1,获得优惠价节点
Node node=document.getElementsByTagName("优惠价").item(0);
//2,删除节点
node.getParentNode().removeChild(node);
//3,更新设置
Transformer ts=TransformerFactory.newInstance().newTransformer();
ts.transform(new DOMSource(document), new StreamResult("src/book.xml"));
}
//7、操作XML文件属性
public static void test7(Document document){
//得到第一本书的属性
Node node=document.getElementsByTagName("书").item(0);
if(node.getNodeType()==Node.ELEMENT_NODE){
Element ele=(Element)node;
System.out.println(ele.getAttribute("出版社"));
}
}
//设置第二本书的属性值为新华
public static void test8(Document document)throws Exception{
Node node=document.getElementsByTagName("书").item(1);
Element ele=(Element)node;
ele.setAttribute("出版社", "新华");
TransformerFactory tf=TransformerFactory.newInstance();
Transformer ts=tf.newTransformer();
ts.transform(new DOMSource(document), new StreamResult("src/book.xml"));
}
}
Java用DOM操作xml的更多相关文章
- java使用DOM操作XML
XML DOM简介 XML 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文件
java通过dom读写xml文件 要读的xml文件 <?xml version="1.0" encoding="GB2312"?><学生花名册 ...
- Java原生API操作XML
使用Java操作XML的开源框架比较多,如著名的Dom4J.JDOM等,但个人认为不管你用那个框架都要对JDK原生的API有所了解才能更得心应手的应用.本篇就来简单了解下原生的XML API. JAV ...
- JAva使用DOM读取XML数据(解析)
原来一切都是有套路的 使用DOM解析XML文档步骤 1.创建解析器工厂对象 DocumentBuildFactory对象 2.由解析器工厂对象创建解析器对象,即DocumentBuilder对象 3. ...
- java DOM 操作xml
1 代码如下: package dom.pasing; import java.io.IOException; import java.io.StringWriter; import javax.xm ...
- DOM 操作XML(CRUD)
<?xml version="1.0" encoding="UTF-8" standalone="no"?><书架> ...
- Java中Dom解析xml文档
xml文档 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id ...
随机推荐
- Android自定义组合控件
今天和大家分享下组合控件的使用.很多时候android自定义控件并不能满足需求,如何做呢?很多方法,可以自己绘制一个,可以通过继承基础控件来重写某些环节,当然也可以将控件组合成一个新控件,这也是最方便 ...
- linux文件属性详解
Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [root@loca ...
- POJ 3013
思路:ans = 每条边(u,v)*v的子树节点的w = 所有的dist[v]*w[v]之和; #include<iostream> #include<queue> #incl ...
- 【HTML】Intermediate7:Sectioning
1.</article> 2.</section> can use h1 elements at the start of each section,which would b ...
- 完美atoi,哈哈
/* atoi算法,要求完美版 有两种,一种是用longlong,一种是真用int “” " " “-” “+” “ -23” “ +23” “12a" "ab ...
- vijosP1289 老板娘的促销方案
vijosP1289 老板娘的促销方案 链接:https://vijos.org/p/1289 [思路] 组合公式+高精度. 如果n-m<2则无解. 否则对于第一个询问:ans=C(n-m,2) ...
- PHP字符串操作常用函数
/* * 确定字符串长度 * int strlen(string str) * 比较两个字符串 * 1.strcmp函数对两个字符串进行二进制安全的比较,并区分大小写 * int strcmp(str ...
- 让php永远后台运行
ignore_user_abort(true); // 后台运行set_time_limit(0); // 取消脚本运行时间的超时上限
- HW4.38
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- POJ-3207 Ikki's Story IV - Panda's Trick 2sat
题目链接:http://poj.org/problem?id=3207 题意:在一个圆圈上有n个点,现在用线把点两两连接起来,线只能在圈外或者圈内,现给出m个限制,第 i 个点和第 j 个点必须链接在 ...