网易首页 > 网易号 > 正文 申请入驻

XML 初步概述与操作

0
分享至

第一部分XML dom4j

1.Dom4j是一个简单、灵活的开放源代码的库。Dom4j是由早期开发JDOM的人分离出来而后独立开发的。与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性。

2.Dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极易使用的特点。现在很多软件采用的Dom4j,例如Hibernate。使用Dom4j开发,需下载dom4j相应的jar文件。

3.获取Document对象

SAXReader reader = new SAXReader();
Document document = reader.read(new File( “input.xml“ ));

4.元素操作

• //获取文档的元素.

Element root = document.getRootElement();

• //获取某个元素的指定名称的第一个子节

Element element = element.element(“书名”);

• //获取某个元素的指定名称的所有子元素的集合

List list = element.elements(“书名”);

• //添加一个指定名称的子元素

Element childEle = parentEle.addElement(“书名”);

• //删除某个元素指定的子元素

parentEle.remove(childEle);

5.属性操作

• //获取某个元素的指定名称的属性对象

Attribute attr = element.attribute(“id”);

• //获取某个元素的指定名称的属性值

String id = element.attributeValue(“id”);

• //给元素添加属性或更新其值

Attribute attr = element.addAttribute(“id”,”123”);

• //删除某个元素的指定属性

element.remove(attribute);

6.文本操作

• //获取某个元素的文本内容

String text = element.getText();

• //给某个元素添加或更新文本内容

element.setText(“Tom”);

7.将文档写入XML文件,更改生效

OutputFormat format = OutputFormat.createPrettyPrint();

XMLWriter writer = new XMLWriter( newFileOutput( “output.xml“ ),format);

writer.write(document);

writer.close();

8.练习:

①查找某一个节点: 查找id为007的学员的所有信息

②添加某一个节点: “姓名:王五,id:134,年龄:18

第二部分:XPath

  1. XPath 是在 XML 文档中查找信息的语言

XPath 是通过元素和属性进行查找

XPath简化了Dom4j查找节点的过程

使用XPath必须导入jaxen-1.1-beta-6.jar

否则出现

NoClassDefFoundError: org/jaxen/JaxenException

2.XPath语法示例

3.查询节点

• 获取所有符合条件的节点

– document.selectNodes(String xpathExpression) 返回List集合

• 获取符合条件的单个节点

– document.selectSingleNode(String xpathExpression)

– 返回一个Node对象。如果符合条件的节点有多个,那么返回第一个。

4.练习:

①查找id为007的学员姓名

②查找所有的学员姓名

第三部分:XML SAX解析

  1. 为什么会出现SAX解析?

在使用 DOM 解析 XML 文档时,需要读取整个 XML 文档,在内存中构架代表整个 DOM 树的Doucment对象,从而再对XML文档进行操作。此种情况下,如果 XML 文档特别大,就会消耗计算机的大量内存,并且容易导致内存溢出。

SAX解析允许在读取文档的时候,即对文档进行处理,而不必等到整个文档装载完才会对文档进行操作。

注意:sax只能用于读取xml文件,无法作更新

  1. SAX采用事件处理的方式解析XML文件,利用 SAX 解析 XML 文档,涉及两个部分:解析器和事件处理器(对象):

解析器可以使用JAXP的API创建,创建出SAX解析器后,就可以指定解析器去解析某个XML文档。

解析器采用SAX方式在解析某个XML文档时,它只要解析到XML文档的一个组成部分,都会去调用事件处理器的一个方法,解析器在调用事件处理器的方法时,会把当前解析到的xml文件内容作为方法的参数传递给事件处理器。

事件处理器由程序员编写,程序员通过事件处理器中方法的参数,就可以很轻松地得到sax解析器解析到的数据,从而可以决定如何对数据进行处理。

3.解析方式

• 使用SAXParserFactory创建SAX解析工厂

SAXParserFactory factory = SAXParserFactory.newInstance();

• 通过SAX解析工厂得到解析器对象

SAXParser sp = factory.newSAXParser();

• 通过解析器对象得到一个XML的读取器

XMLReader xmlReader = sp.getXMLReader();

• 设置读取器的事件处理器

xmlReader.setContentHandler(new BookParserHandler());

• 解析xml文件

xmlReader.parse(“book·xml”);

4.练习:查找id为007的学生姓名

第四部分:XML Pull解析

  1. 为什么会出现PULL解析?

Pull解析与sax解析类似都是基于事件方法回调机制来实现对xml文件解析。

Sax解析不足:即使已经找到所要的数据,xml数据还是会全部加载进来并产生方法调用。程序员无法停止这些无用的操作,而pull解析解决了此问题。

Pull解析:加载每一部分数据产生方法调用,都必须通过程序员调用一个固定的方法才能进行下去,否则解析工作就停止了。Next()

注意:pull解析也只能用于读取xml文件,无法作更新

  1. Pull解析依赖两个jar包:xmlpull_1_0_5.jar和kxml2-2.3.0.jar

3.常用接口或类

XmlPullParserFactory

XmlPullParser(既是解析器又是数据的存储器)

XmlPullParserException

4.练习:查找id为007的学员姓名

文章转载于:www.atguigu.com

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
NBA名记爆料:亚历山大私下“施压”雷霆管理层,要求留下多尔特

NBA名记爆料:亚历山大私下“施压”雷霆管理层,要求留下多尔特

夜白侃球
2026-06-02 12:58:38
唐山货车司机大热天捎七旬老人40公里,临下车老人突然变脸讹钱

唐山货车司机大热天捎七旬老人40公里,临下车老人突然变脸讹钱

听心堂
2026-06-02 12:03:05
果然被我猜中美国商务部突然宣布:

果然被我猜中美国商务部突然宣布:

叶葉夜
2026-06-02 11:53:15
外交部:希望菲方别任由个别跳梁小丑,一再破坏双方稳定关系的努力

外交部:希望菲方别任由个别跳梁小丑,一再破坏双方稳定关系的努力

澎湃新闻
2026-06-02 15:28:26
深挖 | 纳塔莉:从贫民窟水果姐到LV“太子妃”,44岁的人生太彪悍!

深挖 | 纳塔莉:从贫民窟水果姐到LV“太子妃”,44岁的人生太彪悍!

新民周刊
2026-06-02 10:16:41
美据报或在欧洲增加核部署

美据报或在欧洲增加核部署

界面新闻
2026-06-02 15:11:49
形势到底有多严峻?国人心心念念的特斯拉竟会裁员,评论区炸锅…

形势到底有多严峻?国人心心念念的特斯拉竟会裁员,评论区炸锅…

慧翔百科
2026-06-02 08:27:57
实探|有人连夜飞港抢开户!内地投资者扎堆涌入香港券商银行,资金与投保监管全线收紧

实探|有人连夜飞港抢开户!内地投资者扎堆涌入香港券商银行,资金与投保监管全线收紧

每日经济新闻
2026-06-02 13:09:34
太讽刺了!国内的职场环境,不像公司,像朝廷,让人一言难尽…

太讽刺了!国内的职场环境,不像公司,像朝廷,让人一言难尽…

慧翔百科
2026-06-02 08:40:47
韩国“鸟叔”已被移交检察机关

韩国“鸟叔”已被移交检察机关

都市快报橙柿互动
2026-06-02 12:04:32
台当局外事主管部门肯定日菲海域划界谈判,外交部:数典忘祖,毫无底线

台当局外事主管部门肯定日菲海域划界谈判,外交部:数典忘祖,毫无底线

澎湃新闻
2026-06-02 15:26:28
今天我才明白为什么我们的电影市场萧条不振了?

今天我才明白为什么我们的电影市场萧条不振了?

流苏晚晴
2026-06-01 18:05:45
上海队开出了巨额奖金!

上海队开出了巨额奖金!

体育哲人
2026-06-02 13:41:18
李晨郑恺,正式开除跑男

李晨郑恺,正式开除跑男

黎兜兜
2026-06-02 14:21:24
哈尔滨啤酒在香港被检出呕吐毒素,厂商回应:仅在内地销售

哈尔滨啤酒在香港被检出呕吐毒素,厂商回应:仅在内地销售

潇湘晨报
2024-04-22 14:14:16
时的科技黄雍威:载人 eVTOL 要能载人

时的科技黄雍威:载人 eVTOL 要能载人

晚点LatePost
2026-05-29 09:38:03
7年来首次!上海气象预警重要调整→

7年来首次!上海气象预警重要调整→

上观新闻
2026-06-01 22:04:28
女选手泳衣移位被无码直播,近万人围观!主办方道歉,摄影师封杀

女选手泳衣移位被无码直播,近万人围观!主办方道歉,摄影师封杀

酷侃体坛
2026-06-02 09:09:51
取消60岁限制!工地新规6月1日实施

取消60岁限制!工地新规6月1日实施

新浪财经
2026-06-01 23:45:35
姚明恩师离世!名帅阿德尔曼去世享年79岁:曾率火箭打出22连胜

姚明恩师离世!名帅阿德尔曼去世享年79岁:曾率火箭打出22连胜

罗说NBA
2026-06-02 06:54:26
2026-06-02 16:04:49
IT爱好者小尚
IT爱好者小尚
分享IT教育类信息
630文章数 55关注度
往期回顾 全部

科技要闻

烧掉千亿后,美团、阿里、京东谁先止血?

头条要闻

郑丽文正在访美称愿意与特朗普会面 外交部表态

头条要闻

郑丽文正在访美称愿意与特朗普会面 外交部表态

体育要闻

1米74的业余联赛替补,在英超踢中卫

娱乐要闻

奚梦瑶何猷君婚礼曝光 深情热吻甜蜜

财经要闻

锂电“资源墙”高筑 全球性长期博弈开始

汽车要闻

星途神秘新车轮廓曝光 又一款性能SUV要来了?

态度原创

家居
房产
健康
亲子
教育

家居要闻

流线型轮廓 包容多元身形

房产要闻

5200巨量投资曝光!未来五年,海南格局大变!

干细胞临床研究向患者收费?别踩坑

亲子要闻

我必须要和十五绝交!真的太疼了!

教育要闻

2026年6月山东教育考试月历来了

无障碍浏览 进入关怀版