Dom 解析xml文档,实现xml文档结点的增删改查,遍历
来源:互联网 发布:python 模拟登录豆瓣 编辑:程序博客网 时间:2024/05/06 05:48
打开MyEclipse新建一个Java Project
1. 新建xml包,在包中新建一个book.xml文档,代码如下:
<?xml version="1.0" encoding="utf-8" standalone="no"?><书架> <书 name="yyyyyy"> <售价>20元</售价> <书名>Java就业培训教程</书名> <作者>张孝祥</作者> </书> <书> <书名>JavaScript网页开发</书名> <作者>张孝祥</作者> <售价>28.00元</售价> </书></书架>
- 新建包jaxp,在包中新建Demo类,代码如下:
package jaxp;import java.io.File;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.Transformer;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;public class Demo { /*jaxp解析xml文档*/ @Test public void read() throws Exception{ //读取xml文档的元素值 //1.获取工厂 DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance(); //2.产生解析器 DocumentBuilder builder=factory.newDocumentBuilder(); //3.解析xml文档,得到代表文档的document对象 Document document=builder.parse(new File("src/xml/book1.xml")); //根据标签名获取节点列表 NodeList list=document.getElementsByTagName("售价"); //获取节点列表里的第二个节点 Node price=list.item(1); //获取节点的值 String value=price.getTextContent(); System.out.println(value); } @Test public void update() throws Exception{ //修改xml文件标签的值 //1.获取工厂 DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance(); //2.产生解析器 DocumentBuilder builder=factory.newDocumentBuilder(); //3.解析xml文档,得到代表文档的document对象 Document document=builder.parse(new File("src/xml/book1.xml")); //获取需要修改的标签节点,将修改后的值设置为20元 Node price=document.getElementsByTagName("售价").item(0); price.setTextContent("20元"); //将内存中修改后的doucement写回xml文档 //获取工厂 TransformerFactory tf=TransformerFactory.newInstance(); //获取转换器 Transformer ts=tf.newTransformer(); //将document写回book.xml文当 ts.transform(new DOMSource(document), new StreamResult(new File("src/xml/book1.xml"))); } @Test public void add() throws Exception{ //向xml当中增加标签 //1.获取工厂 DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance(); //2.产生解析器 DocumentBuilder builder=factory.newDocumentBuilder(); //3.解析xml文档,得到代表文档的document对象 Document document=builder.parse(new File("src/xml/book1.xml")); //创建需要增加的节点 Node price=document.createElement("售价"); price.setTextContent("50元"); //得到需要增加节点的父亲 Node parent=document.getElementsByTagName("书").item(0); //把需要增加的节点挂到父节点上 parent.appendChild(price); /*把要添加的标签挂到父节点的指定位置 * parent.insertBefore(price, document.getElementsByTagName("书名").item(0)); */ //将内存中修改后的doucement写回xml文档 //获取工厂 TransformerFactory tf=TransformerFactory.newInstance(); //获取转换器 Transformer ts=tf.newTransformer(); //将document写回book.xml文当 ts.transform(new DOMSource(document), new StreamResult(new File("src/xml/book1.xml"))); } @Test public void delete() throws Exception{ //删除xml文当中的标签 //1.获取工厂 DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance(); //2.产生解析器 DocumentBuilder builder=factory.newDocumentBuilder(); //3.解析xml文档,得到代表文档的document对象 Document document=builder.parse(new File("src/xml/book1.xml")); //得到需要删除的节点 Node price=document.getElementsByTagName("售价").item(1); //由于节点不能自己删除自己,需要获取其父节点,根据其父节点删除 price.getParentNode().removeChild(price); //将内存中修改后的doucement写回xml文档 //获取工厂 TransformerFactory tf=TransformerFactory.newInstance(); //获取转换器 Transformer ts=tf.newTransformer(); //将document写回book.xml文当 ts.transform(new DOMSource(document), new StreamResult(new File("src/xml/book1.xml"))); } @Test public void updateAttribute() throws Exception{ //更改xml文当中标签的属性值 //1.获取工厂 DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance(); //2.产生解析器 DocumentBuilder builder=factory.newDocumentBuilder(); //3.解析xml文档,得到代表文档的document对象 Document document=builder.parse(new File("src/xml/book1.xml")); //操作xml文档的元素时,一般都把元素当作node对象,但是程序员如果发现node不好使时,就应把node强转成相应类型 //得到需要更改属性的元素 Element book=(Element) document.getElementsByTagName("书").item(0); book.setAttribute("name", "yyyyyy"); book.setAttribute("password", "123456"); //将内存中修改后的doucement写回xml文档 //获取工厂 TransformerFactory tf=TransformerFactory.newInstance(); //获取转换器 Transformer ts=tf.newTransformer(); //将document写回book.xml文当 ts.transform(new DOMSource(document), new StreamResult(new File("src/xml/book1.xml"))); } public static void list(Node node){ //遍历book.xml文档中的所有Node if(node.getNodeType()==Node.ELEMENT_NODE){ //判断node是否是Node类型 System.out.println(node.getNodeName()); //System.out.println(node.getTextContent()); } NodeList lis=node.getChildNodes(); for(int i=0;i<lis.getLength();i++){ list(lis.item(i)); } } public static void main(String args[]) throws Exception{ //1.获取工厂 DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance(); //2.产生解析器 DocumentBuilder builder=factory.newDocumentBuilder(); //3.解析xml文档,得到代表文档的document对象 Document document=builder.parse(new File("src/xml/book1.xml")); //遍历book.xml文档的所有节点 list(document); }}
0 0
- java Dom 解析xml文档,实现xml文档结点的增删改查,遍历
- Dom 解析xml文档,实现xml文档结点的增删改查,遍历
- DOM对XML文档的增删改查
- DOM方式对xml文档的增删改查
- xml文档,dom树的增删改查
- JAXP对XML文档进行DOM解析实现增删改
- XML DOM解析文档 获取文本DoM4j实现增删改
- LINQ to XML实现XML文档的增删改查
- XML之------DOM对XML文档增删改查
- 【XML解析】(2)利用DOM解析技术对XML文档进行增删改查操作
- java使用org.w3c.dom解析XML文档,创建、增删查改,保存,读取,遍历元素等操作
- Xml文档增删改查
- DOM解析XML的增删改查实现
- XML文档的增删改查
- C#实现XML文档的增删改查
- Java解析xml文档之DOM解析--CRUD(增删改查)
- dom4j解析xml文档(增删查改)
- DOM4j 解析xml文档,完成增删改查
- Spring的AOP原理
- IOS程序启动过程
- TensorFlow基础
- 71. Simplify Path
- Android仿外卖购物车的实现
- Dom 解析xml文档,实现xml文档结点的增删改查,遍历
- 【unity】RPG游戏鼠标指针管理系统【单利模式】(游戏中,不同状态对于不同指针)
- 关于java控制台输入
- Spring学习(十四)Spring Bean 的3种实例化方法介绍
- 如何在Eclipse下查看 JDK 源码
- 对map集合进行排序
- FZU2190(单调栈)
- c++第7次实验
- Jsoup实现新闻网页的爬取,标题,正文,图片,新闻时间,网页链接的解析示例