//使用 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. mysql连接工具记录

    港优: Sequel pro   

  2. Spring Aop(一)——Aop简介

    转发地址:https://www.iteye.com/blog/elim-2394629 1 Aop简介 AOP的全称是Aspect Oriented Programming,翻译成中文是面向切面编程 ...

  3. 申请 Let's Encrypt 通配符 HTTPS 证书

    目录 一.背景知识 1.1.什么是通配符证书 1.2.什么是 Let's Encrypt 二.证书申请(certbot) 2.1.系统确定 2.2.工具安装 2.3.证书申请 2.4.证书查看 2.5 ...

  4. mac Access denied for user 'root'@'localhost' (using password: YES)

    1:苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务 2: Start it in safe mode 进入终端 输入: cd /usr/local/mysql ...

  5. Flutter 底部的renderflex溢出

    一开始直接使用Scaffold布局,body:new Column  然后模拟器会提示捕获异常: 然后百度了一下Flutter的溢出问题,发现解决办法是使用SingleChildScrollView包 ...

  6. mysqlslap 性能测试

    --create-schema=name 指定测试的数据库名,默认是mysqlslap --engine=name 创建测试表所使用的存储引擎,可指定多个 --concurrency=N 模拟N个客户 ...

  7. VS.vs15

    1.20190615 安装的 vs2015(cn_visual_studio_enterprise_2015_with_update_3_x86_x64_dvd_8923298.iso) 的目录为: ...

  8. Comparable 接口学习:对对象List进行比较和排序(正序和逆序)

    Comparable 接口只有一个 int compareTo(T o) 方法 1.int compareTo(T o) 方法 方法说明: 比较此对象和规定的对象,如果此对象大于,等于,小于规定对象, ...

  9. 《MIT 6.828 Homework 1: boot xv6》解题报告

    本作业的网站链接:MIT 6.828 Homework 1: boot xv6 问题 Exercise: What is on the stack? While stopped at the abov ...

  10. 《MIT 6.828 Lab 1 Exercise 4》实验报告

    本实验链接:mit 6.828 lab1 Exercise 4. 题目 Exercise 4. Read about programming with pointers in C. The best ...