一文读懂四种常见的XML解析技术
之前的文章我们讲解了《XML系列教程之Schema技术_上海尚学堂java培训技术干货》《XML的概念、特点与作用、XML申明_上海Java培训技术干货》,大家可以点击回顾一下之前将的技术,能更好地学习本内容。本文在此基础上再讲述XML的解析技术。(以上文字发表在我的上海尚学堂网站上,大家可以点击阅读更多Java、Python和大数据相关文章)
一、四种常见的XML解析技术

dom是解析xml的底层接口之一(另一种是sax) ,而jdom和dom4j则是基于底层api的更高级封装 ,dom是通用的,而jdom和dom4j则是面向java语言的 。
二、Dom解析Xml(了解)
DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而 DOM 被认为是基于树或基于对象的。

2.1 Dom 解析主要对象
2.2 Dom 解析Xml步骤
l 创建解析器工厂对象
l 由解析器工厂对象创建解析器对象
l 由解析器对象对指定XML文件进行解析,构建相应DOM树,创建Document对象
l 以Document对象为起点对DOM树的节点进行增删改查操作使用
Api 文档参考地址:
http://www.w3school.com.cn/xmldom/index.asp
Dom解析解析学生成绩信息score.xml
| "1.0" encoding="utf-8" ?>
张三 123456 657432 |
| /** * 解析xml文档 * */ public static void parseXml(){ try{ //得到DOM解析器的工厂实例 DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); //从DOM工厂中获得DOM解析器 DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder(); //把要解析的xml文档读入DOM解析器 Document doc = dbBuilder.parse("C:\\java\\idea_workspace_18\\freemarker01\\src\\main\\resources\\scores.xml"); System.out.println("处理该文档的DomImplementation对象 = "+ doc.getImplementation()); //得到文档名称为Student的元素的节点列表 NodeList nList = doc.getElementsByTagName("Student"); //遍历该集合,显示结合中的元素及其子元素的名字 for(int i = 0; i< nList.getLength() ; i ++){ Element node = (Element)nList.item(i); System.out.println("Name: "+ node.getElementsByTagName("Name").item(0).getFirstChild().getNodeValue()); System.out.println("Num: "+ node.getElementsByTagName("Num").item(0).getFirstChild().getNodeValue()); System.out.println("Classes: "+ node.getElementsByTagName("Classes").item(0).getFirstChild().getNodeValue()); System.out.println("Address: "+ node.getElementsByTagName("Address").item(0).getFirstChild().getNodeValue()); System.out.println("Tel: "+ node.getElementsByTagName("Tel").item(0).getFirstChild().getNodeValue()); } }catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } |
结果
三、Dom4J解析Xml(推荐)
DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J。
Api文档参考地址: https://dom4j.github.io/
3.1 D
OM4J解析Xml步骤

3.2 DOM4J 解析学生成绩信息 scores.xml
l 获得document 对象
| SAXReader reader=new SAXReader(); Document document=reader.read(new File("input.xml")); |
l 操作xml文档节点
| Element rootElm=document.getRootElement();//获得根节点 Element memberElm=root.element(“member”); //获得子节点 String text=memberElm.getText();//获得节点文本 Element ageElm=newMemberElm.addElement(“age”);//添加子节点 ageElm.setText(“29”);//设置节点文本 parentElm.remove(childElm);//)删除某节点 |
这就是上海尚学堂Java培训的XML系列教程课件简约版,获取详细全套Java视频教程请联系留下扣扣薇芯等联系方式,稍后会发相关资料给您。
一文读懂四种常见的XML解析技术的更多相关文章
- 菊长说丨一文读懂MySQL4种事务隔离级别
经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢?今天我们就找菊长去,请他帮大家梳理一下这些各具特色的事务隔离级别,咱走着~~~ 点 ...
- 从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路
本文原作者阮一峰,作者博客:ruanyifeng.com. 1.引言 HTTP 协议是最重要的互联网基础协议之一,它从最初的仅为浏览网页的目的进化到现在,已经是短连接通信的事实工业标准,最新版本 HT ...
- [转帖]从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路
从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路 http://www.52im.net/thread-1709-1-2.html 本文原作者阮一峰,作者博客:r ...
- 即时通讯新手入门:一文读懂什么是Nginx?它能否实现IM的负载均衡?
本文引用了“蔷薇Nina”的“Nginx 相关介绍(Nginx是什么?能干嘛?)”一文部分内容,感谢作者的无私分享. 1.引言 Nginx(及其衍生产品)是目前被大量使用的服务端反向代理和负载均衡 ...
- 一文读懂Java动态代理
作者 :潘潘 日期 :2020-11-22 事实上,对于很多Java编程人员来说,可能只需要达到从入门到上手的编程水准,就能很好的完成大部分研发工作.除非自己强主动获取,或者工作倒逼你学习,否则我们好 ...
- 一文读懂HTTP/2及HTTP/3特性
摘要: 学习 HTTP/2 与 HTTP/3. 前言 HTTP/2 相比于 HTTP/1,可以说是大幅度提高了网页的性能,只需要升级到该协议就可以减少很多之前需要做的性能优化工作,当然兼容问题以及如何 ...
- 一文读懂高性能网络编程中的I/O模型
1.前言 随着互联网的发展,面对海量用户高并发业务,传统的阻塞式的服务端架构模式已经无能为力.本文(和下篇<高性能网络编程(六):一文读懂高性能网络编程中的线程模型>)旨在为大家提供有用的 ...
- 大数据篇:一文读懂@数据仓库(PPT文字版)
大数据篇:一文读懂@数据仓库 1 网络词汇总结 1.1 数据中台 数据中台是聚合和治理跨域数据,将数据抽象封装成服务,提供给前台以业务价值的逻辑概念. 数据中台是一套可持续"让企业的数据用起 ...
- 四种常见的App弹窗设计,你有仔细注意观察吗?
弹窗又称为对话框,是App与用户进行交互的常见方式之一.弹窗分为模态弹窗和非模态弹窗两种,两者的区别在于需不需要用户对其进行回应.模态弹窗会打断用户的正常操作,要求用户必须对其进行回应,否则不能继续其 ...
随机推荐
- luoguP1941-
飞扬的小鸟 20分&50分: #include<iostream> #include<cstdio> #include<cstring> #include& ...
- CentOS7像外部163邮箱发送邮件
我们在运维过程中,为了随时了解服务器的工作状态,出现问题随时提醒,像个人邮箱发送邮件是必须的,但是刚刚安装好的系统是无法发送邮件的.需要们进行一些配置和程序的安装,我安装完系统后,自带mail12.5 ...
- 最长共公子序列(LCS)
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; ], ...
- 使用Tornado异步接入第三方(支付宝)支付
目前国内比较流行的第三方支付主要有支付宝和微信支付,博主最近研究了下如何用Python接入支付宝支付,这里我以Tornado作为web框架,接入支付宝构造支付接口. 使用Tornado异步接入支付宝支 ...
- 前端axios下载excel无法获取header所有字段问题
后端设置header后,前端无法获取到其他字段,只需要在服务器端header里面设置 Access-Control-Expose-Headers: Content-Disposition
- VMware Workstation Pro下载密钥
热门虚拟机软件VMware Workstation Pro现已更新至14.1.2,14.0主要更新了诸多客户机操作系统版本,此外全面兼容Wind10创建者更新.12.0之后属于大型更新,专门为Win1 ...
- 执行grunt命令报错 Cannot find module 'coffee-script'
Failed to list grunt tasks in yudian-frontend-salesplatform\Gruntfile.js: process finished with exit ...
- ASP.NET C# 实现实时用户在线
public static class UserOnline { /// <summary> /// 获取或设置在线列表 /// </summary> public stati ...
- IIS 接口访问404
IIS->网站->ASP->启用父路径(true)
- 《SpringMVC从入门到放肆》十、SpringMVC注解式开发(复杂参数接收)
上一篇我们学习了简单的参数接收方式,以及对编码的统一处理.今天我们来接收对象参数. 一.接收对象参数 jsp页面: <%@ page language="java" impo ...
