day02笔记Word下载.docx
- 文档编号:15705800
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:15
- 大小:20.61KB
day02笔记Word下载.docx
《day02笔记Word下载.docx》由会员分享,可在线阅读,更多相关《day02笔记Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
当xml文档非常大,不可能将xml所有数据加载到内存
SAX思想:
一边解析,一边处理,一边释放内存资源----不允许在内存中保留大规模xml数据
StAXTheStreamAPIforXML-----XML流API
STAX是一种拉模式xml解析方式,SAX是一种推模式XML解析方式
推push模式:
由服务器为主导,向客户端主动发送数据
拉pull模式:
由客户端为主导,主动向服务器申请数据
程序员在实际开发中,使用已经开发好工具包-----JAXP、DOM4j、XMLPULL
解析方式与解析开发包关系?
解析方式是解析xml思想,没有具体代码,解析开发包是解析xml思想具体代码实现
JAXP是sun官方推出实现技术同时支持DOMSAXSTAX
DOM4j是开源社区开源框架支持DOM解析方式
XMLPULLAndroid移动设备内置xml解析技术支持STAX解析方式
当SAX和STAX读取xml数据时,如果读取到内存数据不释放-----内存中将存在整个xml文档数据(类似DOM支持修改和回写)
DOM、SAX、STAX在实际开发中选择?
在javaee日常开发中----优先使用DOM(编程简单)
当xml文档数据非常多,不可能使用DOM---造成内存溢出------优先使用STAX
移动开发使用STAX----AndroidXMLPULL
JAXP开发进行xml解析:
javax.xml.parsers存放DOM和SAX解析器
javax.xml.stream存放STAX解析相关类
org.w3c.dom存放DOM解析时数据节点类
org.xml.sax存放SAX解析相关工具类
DOM解析快速入门
1、创建xml文档books.xml
在企业实际开发中,为了简化xml生成和解析----xml数据文件通常不使用约束的
2、使用DOM解析xml
将整个xml文档加载到内存中:
工厂---解析器---解析加载
3、Document通过getElementsByTagName获得节点集合NodeList
通过NodeList提供getLength和item遍历节点集合
遍历ArrayList
for(inti=0;
i<
arraylist.size();
i++){
arraylist.get(i);
}
遍历NodeList
nodelist.getLength();
nodelist.item(i);
-----将遍历每个节点转换子接口类型
什么是Node?
对于xml来说,xml所有数据都是node节点(元素节点、属性节点、文本节点、注释节点、CDATA节点、文档节点)
ElementAttrTextCommentCDATASectionDocument-----都是Node子接口
node有三个通用API:
getNodeName():
返回节点的名称
getNodeType():
返回节点的类型
getNodeValue():
返回节点的值----所有元素节点value都是null
----------------------------------------------------------------------------------------
DOM编程思路小结
1、装载XML文档----Document
2、Document获得指定元素-----getElementsByTagName(返回NodeList)
3、遍历NodeList获得每个Node
4、将每个Node强制转换Element
5、通过元素节点API操作属性和文本内容
getAttribute获得属性值
getTextContent获得元素内部文本内容
先用全局查找锁定范围,再用相对关系查找得到需要数据
getElementById方法必须用于带有约束xml文档中!
!
所以开发语言默认支持DTD,当使用Schema时,单独编程导入schema!
XMLDOM增加、修改和删除操作------操作内存中文档对象
XML的回写
XML元素添加:
1、创建节点元素2、将节点元素加入指定位置
XML元素修改:
查询到指定元素1、修改属性setAttribute2、修改元素文本内容setTextContent
XML元素删除:
删除节点.getParentNode().removeChild(删除节点)
-------------------------------------------------------------------------------------------------
SAX和STAX都是基于事件驱动-----SAX推模式STAX拉模式
SAX常用事件
startDocument()----文档开始事件
startElemen()----元素开始事件
characters()----文本元素事件
endElement()----元素结束事件
endDocument()-----文档结束事件
为什么说SAX是推模式解析?
解析器控制xml文件解析,由解析器调用相应事件方法
在startElemen()endElement()获得开始和结束元素名称
在characters()获得读取到文本内容
在startElemen()读取属性值
STAX拉模式xml解析方式-----客户端程序,自己控制xml事件,主动调用相应事件方法
当使用XMLPULL如果使用Android系统,系统内置无需下载任何开发包,如果想JavaSEJavaEE使用pull解析技术下载单独pull开发工具包
xpp3-----XMLPullParser3是pullAPI代码实现
使用pull解析器
1、去网站上下载pull解析器实现xpp3(Android内置)
2、将xpp3-1.1.3.4.C.jar导入java工程
导入jar包位于当前工程内部,在工程内新建lib,将jar复制过来,将pull解析器jar添加buildpath
jar包就是.class文件集合压缩包(采用zip格式压缩)
Pull解析器使用stax解析方式----拉模式解析
Pull采用将xml文档传递解析器,手动通过next触发文档解析事件,在客户端代码中获取当前事件,从而调用相应事件处理方法
3、创建pull解析器
4、将xml文档内容传递pull解析器
为什么STAX解析方式效率好于SAX?
1、SAX无选择性的,所有事件都会处理解析方式,Stax由用户控制需要处理事件类型
2、在使用Stax进行数据解析时,随时终止解析
Pull解析器生成xml文档功能----通过XmlSerializer生成xml文档
解析xml:
文档开始、元素开始、文本元素、元素结束、文档结束
生成xml:
生成文档声明(文档开始),元素开始、文本内容、元素结束、文档结束
1、生成简单xml
2、通过对象数据生成xml
3、通过对象List数据生成xml
在程序中抽取两个方法-----1.xml---List对象2.List对象生成xml
对内存中List进行CURD操作
作业:
1、整理DOM、SAX、STAX原理和区别
2、编写商品xml文件---通过JAXPDOM完成CURD操作
3、编写SAX运行案例-----了解
4、编写商品XML文件---通过Pull解析器完成CURD操作----重点xml2Listlist2xml两个方法
需要解析的xml文件
<
?
xmlversion="
1.0"
encoding="
UTF-8"
>
!
DOCTYPEbooks[
<
ELEMENTbooks(book+)>
ELEMENTbook(name,price)>
ELEMENTname(#PCDATA)>
ELEMENTprice(#PCDATA)>
ATTLISTbook
idID#REQUIRED
>
]>
books>
bookid="
b001"
<
name>
java编程基础<
/name>
price>
80<
/price>
/book>
b002"
java高级应用<
100<
boo3"
编程高手秘笈<
200<
/books>
Pull上课解析代码
packagecn.itcast.stax.pull;
importjava.io.FileInputStream;
importorg.junit.Test;
importorg.xmlpull.v1.XmlPullParser;
importorg.xmlpull.v1.XmlPullParserFactory;
/**
*通过pull解析器解析xml
*
*@authorseawind
*/
publicclassPullTest{
@Test
//通过pull解析技术查看"
编程高手秘笈"
价格
publicvoiddemo2()throwsException{
//1.创建pull解析器
XmlPullParserFactoryfactory=XmlPullParserFactory.newInstance();
XmlPullParserparser=factory.newPullParser();
//2.将xml文档传递解析器
parser.setInput(newFileInputStream("
books.xml"
),"
utf-8"
);
//通过循环驱动事件解析
intevent;
//查找name标识位
booleanis
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- day02 笔记