//使用 jaxp 对xml文档进行dom解析
public class Demo2 { //必要步骤
@Test
public void test() throws Exception { //1.创建工厂
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //2.得到dom解析器
DocumentBuilder db = dbf.newDocumentBuilder(); //3.解析XML文档,得到代表文档的Document
Document d = db.parse("src/com/xml/javaweb/book.xml"); }
}

示例:对xml节点进行增删改查

 public class Demo3 {
//读取XML文件中:<书名>javaWEB</书名> 节点中的值
@Test
public void read() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document d = db.parse("src/com/xml/javaweb/book.xml"); NodeList list = d.getElementsByTagName("书名");
Node node = list.item(1);
String text = node.getTextContent();
System.out.println(text);
} //遍历整个XML文档中的节点
@Test
public void read1() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document d = db.parse("src/com/xml/javaweb/book.xml"); //得到根节点
NodeList list = d.getElementsByTagName("书架");
Node root = list.item(0);
list(root);
} private void list(Node root) {
if(root instanceof Element)
System.out.println(root.getNodeName()); NodeList nodelist = root.getChildNodes();
for(int i = 0;i<nodelist.getLength();i++) {
Node node = nodelist.item(i);
list(node);
}
} //拿到 name 属性的值
@Test
public void read2() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document d = db.parse("src/com/xml/javaweb/book.xml"); Element node = (Element) d.getElementsByTagName("书名").item(0); //node 里面的方法不够用了 没有指定名字得到属性,在知道得到的是Element的情况下 ,把node强转一下
String att = node.getAttribute("name");
System.out.println(att);
} //向XML文档中添加节点 <售价>39.00元</售价>
@Test
public void add() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document d = db.parse("src/com/xml/javaweb/book.xml"); //创建节点
Element element = d.createElement("售价");
element.setTextContent("39.00元"); //添加节点
Node node = d.getElementsByTagName("书").item(0);
node.appendChild(element); //更新XML文档
TransformerFactory tff = TransformerFactory.newInstance();
Transformer tf = tff.newTransformer();
tf.transform(new DOMSource(d), new StreamResult(new FileOutputStream("src/com/xml/javaweb/book.xml")));
} //向XML文档中指定位置添加节点 <售价>39.00元</售价>
@Test
public void add2() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document d = db.parse("src/com/xml/javaweb/book.xml"); //创建节点
Element element = d.createElement("售价");
element.setTextContent("29.00元"); //得到参考节点
Element ref = (Element) d.getElementsByTagName("售价").item(0); //添加节点
Node node = d.getElementsByTagName("书").item(0); //往“书”节点的指定位置插入节点
node.insertBefore(element, ref); //在参考节点之前插入新建的节点 //更新XML文档
TransformerFactory tff = TransformerFactory.newInstance();
Transformer tf = tff.newTransformer();
tf.transform(new DOMSource(d), new StreamResult(new FileOutputStream("src/com/xml/javaweb/book.xml")));
} //向XML文档节点上添加属性 <书名> java就业培训课程</书名> 上添加属性 name = "xxxx"
@Test
public void add3() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document d = db.parse("src/com/xml/javaweb/book.xml"); //得到要添加属性的节点
Element element= (Element) d.getElementsByTagName("书名").item(0);
//往指定节点添加属性
element.setAttribute("name", "xxxx"); //更新XML文档
TransformerFactory tff = TransformerFactory.newInstance();
Transformer tf = tff.newTransformer();
tf.transform(new DOMSource(d), new StreamResult(new FileOutputStream("src/com/xml/javaweb/book.xml")));
} //删除XML文档节点 <售价>39.00元</售价>
@Test
public void delete() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document d = db.parse("src/com/xml/javaweb/book.xml"); //得到要删除的节点
Element element= (Element) d.getElementsByTagName("售价").item(1);
//得到要删除的节点的父节点 再调用父节点中删除子节点的方法
element.getParentNode().removeChild(element); //更新XML文档
TransformerFactory tff = TransformerFactory.newInstance();
Transformer tf = tff.newTransformer();
tf.transform(new DOMSource(d), new StreamResult(new FileOutputStream("src/com/xml/javaweb/book.xml")));
} //更新XML文档节点 <作者>张孝祥</作者> -> <作者>xzk</作者>
@Test
public void update() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document d = db.parse("src/com/xml/javaweb/book.xml"); //得到要更新的节点
Element element= (Element) d.getElementsByTagName("作者").item(1);
//更新该节点的文本
element.setTextContent("xzk"); //更新XML文档
TransformerFactory tff = TransformerFactory.newInstance();
Transformer tf = tff.newTransformer();
tf.transform(new DOMSource(d), new StreamResult(new FileOutputStream("src/com/xml/javaweb/book.xml")));
}
}

2.1 使用JAXP 对 xml文档进行DOM解析的更多相关文章

  1. 使用JAXP对xml文档进行DOM解析基础

    XML解析方式分为两种:dom和sax         dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式.       sax: ...

  2. 使用JAXP对XML文档进行DOM解析

    import java.io.FileOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers. ...

  3. javaweb学习总结十一(JAXP对XML文档进行DOM解析)

    一:将内存中写好的xml文件读取到硬盘上 二:DOM方式对xml文件进行增删改查 1:添加节点(默认是在最后的子节点后面添加) @Test // 向元素中添加节点<version>1.0& ...

  4. 2.2 使用 JAXP 对XML文档进行SAX解析

    使用JAXP 对 XML文档进行 SAX解析: public class Demo1 { /** * 使用JAXP对XML文档进行SAX解析 * @throws Exception * @throws ...

  5. javaweb学习总结十二(JAXP对XML文档进行SAX解析)

    一:JAXP使用SAX方式解析XML文件 1:dom解析与sax解析异同点 2:sax解析特点 二:代码案例 1:xml文件 <?xml version="1.0" enco ...

  6. XML文档读取-DOM

    DOM(Document Object Model),“文档对象模型”早期是为了解决不用浏览器间数据兼容问题提出的解决方案,现在已经是W3C组织推荐的处理可扩展标志语言的标准编程接口. W3C DOM ...

  7. 源生API解析XML文档与dom4j解析XML文档

    一.XML语言 XML是一种可扩展的标记语言,是一种强类型的语言,类似HTML(超文本标记语言,是一种弱类型的语言).XML是一种通用的数据交换格式(关系型数据库),综上所诉:XML可以传输数据,也可 ...

  8. Java高级特性 第13节 解析XML文档(1) - DOM和XPath技术

    一.使用DOM解析XML文档 DOM的全称是Document Object Model,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树 ...

  9. 使用Dom4j对XML文档创建与解析

    创建XML文件: public class Dom4jCreateXml { public void testCreatXml() { //创建文档对象 Document document = Doc ...

随机推荐

  1. [Scikit-learn] 2.5 Dimensionality reduction - Probabilistic PCA & Factor Analysis

    2.5.4. Factor Analysis PPCA的基本性质以及人肉推导: 以上假设z是标准正态分布的情况.以下是对z的分布的扩展,为general normal distribution. Fr ...

  2. Python之操作RabbitMQ

    RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应用程序 ...

  3. CSS 自适应技巧

    DIV的内容垂直居中 不再MARGINT-TOP多少 来居中显示 display:table-cell; #block-1{ width:100%; height:80px; display:tabl ...

  4. 阿里巴巴java规则p3c结合sonar使用

    sonar插件位置: jar包放至$SONAR_HOME/extensions/plugins下,重启sonar即可 如何在sonarqube的pmd插件中整合阿里开发规范 alibaba p3c s ...

  5. Python 利用二分法查询数据

    一. 二分法的适用条件 二分法查找适用于数据量较大时, 但是数据需要先排好顺序. 优点: 二分法查找效率特别高 缺点: 二分法只适用于有序序列 二. 二分法的主要思想是:设查找的数组区间为array[ ...

  6. Centos6.5搭建方法

    # VSFTP # ## ###安装 vsftp     yum install vsftpd* -y ###启动服务     /etc/init.d/vsftpd restart ###配置     ...

  7. 关于LuckyE博客的前言

    第一次开始尝试怎么写博客,也不知道写点什么好...... 开始写博客的原因其实很多,主要原因是因为最近考出cisp-pte证书,然后前几天电话面试某比较有名的安全公司(x盟)的渗透测试工程师实习生被撸 ...

  8. 从 .NET 到 JavaScript —— 纯前端报表控件 ActiveReportsJS 焕新登场

    报表工具的发展史,最早可以追溯到微软报表SSRS(SQL Server Reporting Services)时期.最初,报表工具主要应用于报表的定制.呈现和输出.经过几十年的发展,随着各种业务系统功 ...

  9. SQL SERVER ISDATE函数

    定义: ISDATE函数判断指定字符串是否是有效日期. 语法: ISDATE(date) 参数: ①date是需要判定是否是有效日期的字符串 返回值: int型数据 例:  声明:本文是本人查阅网上及 ...

  10. 1.4Zookeeper和Thymeleaf的使用

    什么是Zookeeper? Zookeeper 是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务.配置维护和命名服务等等.采用下图描述zookeep ...