博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dom 解析xml文件
阅读量:6245 次
发布时间:2019-06-22

本文共 4036 字,大约阅读时间需要 13 分钟。

JAXP技术

JAXP即Java Api for Xml Processing该API主要是SUN提供的用于解析XML数据的一整套解决方案,主要包含了DOM和SAX解析技术。大家可以参见SUN的以下两个包:

javax.xml.parsers.*                      主要存储的是解析器

org.w3c.dom.*或org.w3c.sax.*    主要存储的是DOM解析或SAX解析需要的API

DOM解析主要采用DOM树的方式进行XML的数据解析。如:JavaScript中的DOM操作

SAX解析主要采用事件的方式进行XML的数据解析。    如:JavaScript中的事件机制

  1. 编写需要解析的XML文件
  2. 获取相应的XML解析器对象
  3. 使用API获取数据
  4. 返回数据给开发者

其中回车换行也算是一个元素,所以底下xml文件中的users节点有个节点,其中3个为#text的打印

1 
2
3
4
jack
5
26
6
gz
7
8
二货
28
天河区
9

 

1 import org.w3c.dom.Document;  2 import org.w3c.dom.Element;  3 import org.w3c.dom.Node;  4 import org.w3c.dom.NodeList;  5   6 public class Demo1 {  7   8     // 2. 提供获取解析器的方法  9     public static DocumentBuilder getParser()throws Exception{ 10         // 2.1  创建工厂类对象 11         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 12         // 2.2 获取解析器对象 13         DocumentBuilder parser = factory.newDocumentBuilder(); 14         return parser; 15     } 16      17     // 3. 提供获取DOM数据的方法 18     public static Document getDOM(File file)throws Exception{ 19         // 3.1 获取解析器 20         DocumentBuilder parser = getParser(); 21         // 3.2解析数据 22         Document dom = parser.parse(file); 23         return dom; 24     } 25      26     // 4. 提供解析根元素的数据的方法 27     public static void getRoot(File file)throws Exception{ 28         // 4.1 获取DOM树 29         Document dom = getDOM(file); 30         // 4.2遍历dom树找根元素 31         Node node = dom.getElementsByTagName("users").item(0); 32         // 4.3输出根元素的名 33         System.out.println(node.getNodeName()); 34         // 4.4根据节点直接的关系获取根元素 35         NodeList list = dom.getChildNodes(); 36         Node root = list.item(0); 37         System.out.println(root.getNodeName()); 38         root = dom.getFirstChild(); 39         System.out.println(root.getNodeName()); 40         root = dom.getLastChild(); 41         System.out.println(root.getNodeName()); 42     } 43      44     // 5. 添加一个user节点 45     public static Document addElement(File file)throws Exception{ 46         // 5.1获取DOM树 47         Document dom = getDOM(file); 48         // 5.2创建user元素 49         Element user = dom.createElement("user"); 50         Element name = dom.createElement("name"); 51         Element age = dom.createElement("age"); 52         Element address = dom.createElement("address"); 53          54         name.setTextContent("焦宁波"); 55         age.setTextContent("28"); 56         address.setTextContent("天河区"); 57         // 5.3建立关系 58         Element root = (Element) dom.getFirstChild(); 59         user.appendChild(name); 60         user.appendChild(age); 61         user.appendChild(address); 62         root.appendChild(user); 63         // 5.4返回修改后的DOM树对象 64         return dom; 65     }  66      67     // 6. 修改第二个user的年龄为30岁 68     public static Document modifyElement(File file)throws Exception{ 69         // 6.1获取DOM树 70         Document dom = getDOM(file); 71         // 6.2获取第二个age元素 72         Node age2 = dom.getElementsByTagName("age").item(1); 73         // 6.3设置文本值 74         age2.setTextContent("30"); 75         return dom; 76     } 77      78     // 7. 删除第一个user节点 79     public static Document removeElement(File file)throws Exception{ 80         // 7.1获取DOM树 81         Document dom = getDOM(file); 82         // 7.2获取user的父亲 83         dom.getElementsByTagName("user").item(0).getParentNode().removeChild(dom.getElementsByTagName("user").item(0)); 84         return dom; 85     } 86      87     // 8. 使用关系获取节点 88     public static void searchElement(File file)throws Exception{ 89         // 8.1获取DOM树 90         Document dom = getDOM(file); 91         // 8.2获取第二个user的所有的子元素并输入元素名 92         Element user2 = (Element) dom.getElementsByTagName("user").item(1); 93         // 8.3获取所有的儿子 94         NodeList list = user2.getChildNodes(); 95         // 8.4遍历所有的孩子 96         for(int i = 0;i

 

转载于:https://www.cnblogs.com/friends-wf/p/3723523.html

你可能感兴趣的文章
(git应用)一台电脑多项目版本控制
查看>>
【跃迁之路】【637天】程序员高效学习方法论探索系列(实验阶段394-2018.11.10)...
查看>>
小菊花课堂之JavaScript作用域与闭包
查看>>
AliOS Things 电源管理框架使用说明
查看>>
Vue-cli的打包初体验
查看>>
关于MySQL 通用查询日志和慢查询日志分析
查看>>
一文带你学会使用YOLO及Opencv完成图像及视频流目标检测(上)|附源码
查看>>
单Activity多Fragment动态修改状态栏颜色功能
查看>>
AI技术出海 - 阿里云GPU服务器助力旷视勇夺4项世界第一
查看>>
小程序 二次封装wx.request方法
查看>>
C++ 类型转换
查看>>
promise.then
查看>>
Java中的四种引用类型:强引用、软引用、弱引用和虚引用
查看>>
cordova create 创建项目出错 (Error: Unhandled "error" event)
查看>>
指标模型运算系统的意义与实现
查看>>
简单实现 VUE 中 MVVM - step1 - defineProperty
查看>>
算法-比较数据
查看>>
Redux 关系图解
查看>>
vue 1.x 交互-仿百度下拉列表
查看>>
Zsh 开发指南(第一篇 变量和语句)
查看>>