第6章-XML技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成绩信息
分析
依据使用DOM读取XML的步骤
完成时间:20分钟 共性问题集中讲解
第26页/共33页
讲解:使用DOM4J解析XML的常见操作
获得document 对象
SAXReader reader=new SAXReader(); Document document=reader.read(new File("input.xml"));
使用DOM读取XML的步骤:
1.创建解析器工厂对象 2.由解析器工厂对象创建解析器对象 3.由解析器对象对指定XML文件进行解析,构建相应 DOM树,创建Document对象 4.以Document对象为起点对DOM树的节点进行增删 改查操作使用
DocumentBuilderFactory DocumentBuilder Document dbf doc db = DocumentBuilderFactory.newInstance(); = = db.parse(“book.xml"); dbf.newDocumentBuilder(); 演示示例:使用DOM读取XML数据
提问
DTD 元素中?、*、+这三个符号的用途是什么?
第12页/共33页
3401
串讲:外部DTD文档
问题
当验证的XML文件较多时,使用内部DTD可能出现 冗余
示例
<?xml version="1.0"?> <!DOCTYPE poem SYSTEM "poem.dtd"> <poem> <title>春晓</title> <author>孟浩然</author> <year>732</year> <content>春眠不觉晓……</content> </poem> <!ELEMENT poem (author,title,content) > <!ELEMENT author (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT content (#PCDATA)>
使用大 量接口
第24页/共33页
讲解:使用DOM4J解析XML
使用DOM4J解析XML的步骤
导入dom4j 的jar包 导入相应的类 指定要解析的XML文件
import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; File f=new File(fileName); SAXReader saxReader=new SAXReader(); Documentdocument=saxReader.read(f);
操作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);//)删除某节点
第3页/共33页
本章任务
使用XML存储数据 验证XML文档 使用DOM解析XML 使用DOM4J解析XML
第4页/共33页
本章目标
编写格式良好的XML文档
使用DTD验证XML文档 使用DOM读取XML文档数据
重点 难点 重点
使用DOM在XML中添加、修改和删除数据 使用DOM4J读取XML文档数据
注释
属性
<author>王姗</author>
<title>.NET高级编程</title> <description>包含C#框架和网络编程等</description>
</book>
</books> 元素--由开始标签、元素 内容和结束标签组成
第6页/共33页
串讲:格式良好的 XML 文档
必须有XML声明语句
DOM
SAX
基于事件
消耗资源小
适用于数据量较大的XML
比DOM更快 JDOM仅使用具体类 而不使用接口
JDOM
DOM4J
非常优秀的Java XML API 性能优异、功能强大 开放源代码
第16页/共33页
串讲:使用DOM解析XML
Document Object Model
<book> <title>三国演义</title> <author>罗贯中 </author> <price>30元</price> </book>
关键字
第11页/共33页
串讲:DTD元素的定义
语法
<!ELEMENT NAME CONTENT>
关键字 元素名称 元素类型
#PCDATA-可以包含任何字符数据,但是不能在其中包含任何子元素。 如:<!ELEMENT title (#PCDATA)>
纯元素类型-只包含子元素,并且这些子元素外没有文本。如: <!ELEMENT poems (poem*)>
把XML 文件转换成 Document 对象
获取节点属性或文本值
String text=memberElm.getText();
String text=attribute.getText();
演示示例:使用DOM4J解析XML
第25页/共33页
上机练习
练习
需求说明
使用DOM4J解析描述成绩信息的XML即score.xml,输出
第19页/共33页
上机练习
练习
需求说明
使用DOM解析描述成绩信息的XML即scores.xml,输出 成绩信息
分析
依据使用DOM读取XML的步骤
完成时间:20分钟 共性问题集中讲解
第20页/共33页
串讲:使用DOM维护XML数据
在XML中添加节点数据的步骤
1.构造DOM树 2.创建新节 点 3.添加到所 属父节点 4.保存XML文 档
完成时间:20分钟 共性问题集中讲解
第14页/共33页
小结
提问
XML文档结构中包含哪些部分?
格式良好的XML文档需要遵循哪些规则?
定义DTD元素的语法是什么?
引用外部DTD文档的语法是什么?
第15页/共33页
讲解:XML解析技术
四种常见的XML解析技术
基于XML树结构 比较耗资源 适用于多次访问XML
Node
Element
代表XML 文档中的标签 getAttribute(String attributename)
是DOM 结构中最基本的对象,代表了文档树中的一个抽象节点 getChildNodes( ) 、getNodeName( ) 、getNodeValue( )
第18页/共33页
串讲:使用DOM解析XML
第10页/共33页
串讲:编写DTD文档
示例
使用DTD验证描述诗集的XML文档
<?xml version="1.0"?> XML根元素 <!DOCTYPE poem [ <!ELEMENT poem (author,title,content) > <!ELEMENT author (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT content (#PCDATA)> DTD元素 ]> <poem> <author>王维</author> <title>鹿柴</title> <content>空山不见人,但闻人语声。返景入深林,复照青苔上。 </content> </poem>
第29页/共33页
答疑时间
同学们请就以下方面的问题请教老师
在XML中使用命名空间 使用Schema验证XML文档 (教员备课时自行填写)
第一单元
第六章
XML技术
第1页/共46页
本章相关学习资源
学习平台“Java高级特性”课程
《通用数据存储之王——XML》专题 《操作XML数据》专题
学生用书
《使用Java高级实用技术》
第6章 《XML技术》
第2页/共33页
预习检查
提问
XML文档结构中主要包括哪几个部分?
定义DTD的语法是什么?
使用DOM解析XML的步骤是什么?
在XML中修改或删除数据的步骤
1.构造DOM树
2.找到符合 条件的节点 3.修改或删 除节点 4.保存XML文 档
演示示例:使用DOM维护XML数据
第21页/共33页
上机练习
练习
需求说明
使用DOM对保存成绩信息的XML即score.xml做如下操
作
删除ID为1的成绩 修改ID为2的成绩为60 添加一个学生的成绩信息(ID为3)
外部DTD文档
Fra Baidu bibliotek
引入外部DTD文档
poem.dtd文档中的 内容
第13页/共33页
3302
上机练习
练习
需求说明
为下面的XML编写DTD验证文档 要求:名称最多出现1次,教师至少是一个人 <?xml version="1.0" encoding="gb2312"?> <学校> <班级> <名称>初三二班</名称> <教师>李永</教师> </班级> </学校>
必须有且仅有一个根元素 标签大小写敏感
属性值用双引号 标签成对 元素正确嵌套
第7页/共33页
上机练习
练习
需求说明
使用XML描述下表中的学生成绩信息。XML文件为 scores.xml
ID 1 2 姓名 王同 李佳 课程 java sql 完成时间:5分钟 共性问题集中讲解
第8页/共33页
成绩 89 58
第28页/共33页
讲解:使用DOM4J解析XML的常见操作
将文档写入XML 文件
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("GBK"); //指定XML编码
XMLWriter writer=new XMLWriter(new FileWriter("output.xml"),format); writer.write(document); writer.close();
完成时间:20分钟 共性问题集中讲解
第22页/共33页
小结
提问
使用DOM读取XML数据的步骤是什么?
主要的DOM对象有哪些?各自的作用是什么?
第23页/共33页
讲解:DOM4J
开源、 易用
DOM4J
应用于 Java平 台
Document:定义XML文档 Element:定义XML元素 Text:定义XML文本节点 Attribute:定义了XML 的属性 „„
第17页/共33页
串讲:DOM对象
使用DOM解析XML主要使用的对象
代表整个XML文档 getElementsByTagName(String name) 、getDocumentElement( )
Document
NodeList
指包含了一个或者多个节点(Node) 的列表 item(int index)
重点
使用DOM4J在XML中添加、修改和删除数据
第5页/共33页
串讲:XML文档结构
Extensible Markup <?xml version="1.0" encoding="UTF-8"?> Language
<books> <!--图书信息--> <book id="bk101"> 根元素 XML 声明- -定义 XML 版 本和编码信息
第27页/共33页
讲解:使用DOM4J解析XML的常见操作
获得属性节点
Element root=document.getRootElement(); Attribute attribute=root.attribute("size"); //属性名name
操作属性
String text=attribute.getText();//获取属性文字 newMemberElm.addAttribute(“name”, “sitinspring”);//添加属性 attribute.setText(“sitinspring”);//设置属性的文字 root.remove(attribute);// )删除某属性
讲解:XML作用及优势
XML基于文本格式,具有简单性、可扩展性、交互 性和灵活性 持久化 存储数 据
数据交 换
数据配置
第9页/共33页
串讲:DTD
DTD即文档类型定义--Document Type Definition
使每个XML文件可以携带一个自身格式的描述 一个DTD文档可能包含如下内容:
元素的定义规则 元素之间的关系规则 属性的定义规则
分析
依据使用DOM读取XML的步骤
完成时间:20分钟 共性问题集中讲解
第26页/共33页
讲解:使用DOM4J解析XML的常见操作
获得document 对象
SAXReader reader=new SAXReader(); Document document=reader.read(new File("input.xml"));
使用DOM读取XML的步骤:
1.创建解析器工厂对象 2.由解析器工厂对象创建解析器对象 3.由解析器对象对指定XML文件进行解析,构建相应 DOM树,创建Document对象 4.以Document对象为起点对DOM树的节点进行增删 改查操作使用
DocumentBuilderFactory DocumentBuilder Document dbf doc db = DocumentBuilderFactory.newInstance(); = = db.parse(“book.xml"); dbf.newDocumentBuilder(); 演示示例:使用DOM读取XML数据
提问
DTD 元素中?、*、+这三个符号的用途是什么?
第12页/共33页
3401
串讲:外部DTD文档
问题
当验证的XML文件较多时,使用内部DTD可能出现 冗余
示例
<?xml version="1.0"?> <!DOCTYPE poem SYSTEM "poem.dtd"> <poem> <title>春晓</title> <author>孟浩然</author> <year>732</year> <content>春眠不觉晓……</content> </poem> <!ELEMENT poem (author,title,content) > <!ELEMENT author (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT content (#PCDATA)>
使用大 量接口
第24页/共33页
讲解:使用DOM4J解析XML
使用DOM4J解析XML的步骤
导入dom4j 的jar包 导入相应的类 指定要解析的XML文件
import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; File f=new File(fileName); SAXReader saxReader=new SAXReader(); Documentdocument=saxReader.read(f);
操作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);//)删除某节点
第3页/共33页
本章任务
使用XML存储数据 验证XML文档 使用DOM解析XML 使用DOM4J解析XML
第4页/共33页
本章目标
编写格式良好的XML文档
使用DTD验证XML文档 使用DOM读取XML文档数据
重点 难点 重点
使用DOM在XML中添加、修改和删除数据 使用DOM4J读取XML文档数据
注释
属性
<author>王姗</author>
<title>.NET高级编程</title> <description>包含C#框架和网络编程等</description>
</book>
</books> 元素--由开始标签、元素 内容和结束标签组成
第6页/共33页
串讲:格式良好的 XML 文档
必须有XML声明语句
DOM
SAX
基于事件
消耗资源小
适用于数据量较大的XML
比DOM更快 JDOM仅使用具体类 而不使用接口
JDOM
DOM4J
非常优秀的Java XML API 性能优异、功能强大 开放源代码
第16页/共33页
串讲:使用DOM解析XML
Document Object Model
<book> <title>三国演义</title> <author>罗贯中 </author> <price>30元</price> </book>
关键字
第11页/共33页
串讲:DTD元素的定义
语法
<!ELEMENT NAME CONTENT>
关键字 元素名称 元素类型
#PCDATA-可以包含任何字符数据,但是不能在其中包含任何子元素。 如:<!ELEMENT title (#PCDATA)>
纯元素类型-只包含子元素,并且这些子元素外没有文本。如: <!ELEMENT poems (poem*)>
把XML 文件转换成 Document 对象
获取节点属性或文本值
String text=memberElm.getText();
String text=attribute.getText();
演示示例:使用DOM4J解析XML
第25页/共33页
上机练习
练习
需求说明
使用DOM4J解析描述成绩信息的XML即score.xml,输出
第19页/共33页
上机练习
练习
需求说明
使用DOM解析描述成绩信息的XML即scores.xml,输出 成绩信息
分析
依据使用DOM读取XML的步骤
完成时间:20分钟 共性问题集中讲解
第20页/共33页
串讲:使用DOM维护XML数据
在XML中添加节点数据的步骤
1.构造DOM树 2.创建新节 点 3.添加到所 属父节点 4.保存XML文 档
完成时间:20分钟 共性问题集中讲解
第14页/共33页
小结
提问
XML文档结构中包含哪些部分?
格式良好的XML文档需要遵循哪些规则?
定义DTD元素的语法是什么?
引用外部DTD文档的语法是什么?
第15页/共33页
讲解:XML解析技术
四种常见的XML解析技术
基于XML树结构 比较耗资源 适用于多次访问XML
Node
Element
代表XML 文档中的标签 getAttribute(String attributename)
是DOM 结构中最基本的对象,代表了文档树中的一个抽象节点 getChildNodes( ) 、getNodeName( ) 、getNodeValue( )
第18页/共33页
串讲:使用DOM解析XML
第10页/共33页
串讲:编写DTD文档
示例
使用DTD验证描述诗集的XML文档
<?xml version="1.0"?> XML根元素 <!DOCTYPE poem [ <!ELEMENT poem (author,title,content) > <!ELEMENT author (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT content (#PCDATA)> DTD元素 ]> <poem> <author>王维</author> <title>鹿柴</title> <content>空山不见人,但闻人语声。返景入深林,复照青苔上。 </content> </poem>
第29页/共33页
答疑时间
同学们请就以下方面的问题请教老师
在XML中使用命名空间 使用Schema验证XML文档 (教员备课时自行填写)
第一单元
第六章
XML技术
第1页/共46页
本章相关学习资源
学习平台“Java高级特性”课程
《通用数据存储之王——XML》专题 《操作XML数据》专题
学生用书
《使用Java高级实用技术》
第6章 《XML技术》
第2页/共33页
预习检查
提问
XML文档结构中主要包括哪几个部分?
定义DTD的语法是什么?
使用DOM解析XML的步骤是什么?
在XML中修改或删除数据的步骤
1.构造DOM树
2.找到符合 条件的节点 3.修改或删 除节点 4.保存XML文 档
演示示例:使用DOM维护XML数据
第21页/共33页
上机练习
练习
需求说明
使用DOM对保存成绩信息的XML即score.xml做如下操
作
删除ID为1的成绩 修改ID为2的成绩为60 添加一个学生的成绩信息(ID为3)
外部DTD文档
Fra Baidu bibliotek
引入外部DTD文档
poem.dtd文档中的 内容
第13页/共33页
3302
上机练习
练习
需求说明
为下面的XML编写DTD验证文档 要求:名称最多出现1次,教师至少是一个人 <?xml version="1.0" encoding="gb2312"?> <学校> <班级> <名称>初三二班</名称> <教师>李永</教师> </班级> </学校>
必须有且仅有一个根元素 标签大小写敏感
属性值用双引号 标签成对 元素正确嵌套
第7页/共33页
上机练习
练习
需求说明
使用XML描述下表中的学生成绩信息。XML文件为 scores.xml
ID 1 2 姓名 王同 李佳 课程 java sql 完成时间:5分钟 共性问题集中讲解
第8页/共33页
成绩 89 58
第28页/共33页
讲解:使用DOM4J解析XML的常见操作
将文档写入XML 文件
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("GBK"); //指定XML编码
XMLWriter writer=new XMLWriter(new FileWriter("output.xml"),format); writer.write(document); writer.close();
完成时间:20分钟 共性问题集中讲解
第22页/共33页
小结
提问
使用DOM读取XML数据的步骤是什么?
主要的DOM对象有哪些?各自的作用是什么?
第23页/共33页
讲解:DOM4J
开源、 易用
DOM4J
应用于 Java平 台
Document:定义XML文档 Element:定义XML元素 Text:定义XML文本节点 Attribute:定义了XML 的属性 „„
第17页/共33页
串讲:DOM对象
使用DOM解析XML主要使用的对象
代表整个XML文档 getElementsByTagName(String name) 、getDocumentElement( )
Document
NodeList
指包含了一个或者多个节点(Node) 的列表 item(int index)
重点
使用DOM4J在XML中添加、修改和删除数据
第5页/共33页
串讲:XML文档结构
Extensible Markup <?xml version="1.0" encoding="UTF-8"?> Language
<books> <!--图书信息--> <book id="bk101"> 根元素 XML 声明- -定义 XML 版 本和编码信息
第27页/共33页
讲解:使用DOM4J解析XML的常见操作
获得属性节点
Element root=document.getRootElement(); Attribute attribute=root.attribute("size"); //属性名name
操作属性
String text=attribute.getText();//获取属性文字 newMemberElm.addAttribute(“name”, “sitinspring”);//添加属性 attribute.setText(“sitinspring”);//设置属性的文字 root.remove(attribute);// )删除某属性
讲解:XML作用及优势
XML基于文本格式,具有简单性、可扩展性、交互 性和灵活性 持久化 存储数 据
数据交 换
数据配置
第9页/共33页
串讲:DTD
DTD即文档类型定义--Document Type Definition
使每个XML文件可以携带一个自身格式的描述 一个DTD文档可能包含如下内容:
元素的定义规则 元素之间的关系规则 属性的定义规则