android学习札记第8章之XML及处理XML解析和创建
XML是可扩展的标记语言,结构化的数据,由程序解析数据。对于XML的定义,在文档类型定义在一个领域内,由组织、企业、技术领域,指定的XML规范,而这种规范就是DTD。java/android中处理XML解析和创建可以使用三大工具:SAX:Simple API for XML DOM4J:Document Object Model for Java Pull:Android集成的一个开源开发包而android系统中集成了Pull,用来解析、创建XML。
工具/原料
JDK、eclipse、android SDK、ADT
一、XML规范——DTD
1、定义(定义好后可使用快捷键): 在文档类型定义在一个领域内,由组织、企业、技术领域,指定的XML规范。 <!DOCTYPE 根标签 [ <![CDATA[对根标签和内部所有标签进行定义]]> <!ELEMENT 元素 (属性,属性...)> <!ELEMENT 元素 (#PCDATA)> <!ATTLIST 元素 属性 CDATA #REQUIRED 属性 CDATA #IMPLIED > ] >
2、引用: 系统内部规范:<!DOCTYPE 根元素 SYSTEM "dtd文件">、在dtd文件中只插入<!DOCTYPE 根标签 [] >之间的内容。 对当前软件系统公开统一的规范:<!DOCTYPE email PUBLIC "本地定位符" "http://.../email.dtd"。
二、java/android中三大处理XML解析、创建工具
1、SAX: ㈠SaxParserFactory 负责创建Sax解析器的工厂(需要先建立工厂,再建立解析器。) ㈡SaxParser Sax解析器,用来解析xml文档 ㈢DefaultHandler 解析过程中,用来处理从xml提取出来的数据(xml中从头到尾提取数据)
2、DOM4J: ①第三方解析XML开发包,在内存中生成一个树状结构,API参考官方文档。 ②XPath 用路径的形式来表示数据的位置 /email/to/to-emai造婷用痃l:定位到to-email /email/body:定位到body /email/@date:定位到属性date /email//to-email:定位到email下所有的to-email //to-email:定位到根下的to-email③Node |——Document |——Element |——Text |——Attribute |——Comment |——CDSect ④创建树 Document doc=DocumentHelper.createDocument();//创建树根 XMLWriter writer=new XMLWriter(输出流out,格式控制工具format); out=FileOutputStream(); OutputFormat format=OutputFormat.createCompactFormat();//压缩格式 OutputFormat format=OutputFormat.createPrettyPrint();//有换行格式 format.setEoding("utf-8");…………
3、XML PULL:(需要新建android项目) ①概述,第三方开源API,已经集成到android开发包中。 XmlPullParserFactory Xml:辅助类 XmlPullParser XmlSerializer ②使用方法 Ⅰ、XmlPullParserFactory A、负责创建解析器和序列化器的工厂类 B、创建对象: XmlPullParserFactory f=XmlPullParserFactory.newInstance(); C、方法: newPullParser():创建解析器 newSerializer():创建序列化器 Ⅱ、Xml Xml.newPullParser():创建解析器,解析XML Xml.newSerializer():创建序列化器,生成XML ③XmlPullParser解析器: setInput(Reader in):设置输入流。 setInput(InputStream in,String charset):设置输入流并指定字符编码。 next():跳到下一段,返回int数字代码,表示跳到的数据类型,结束之后,再向回跳,返回。 XmlPullParser.END_DOCUMENT==1。 getEventType():获得当前的位置数据类型的代码。 getName():数据类型是XmlPullParser.START_TAG、XmlPullParser.END_TAG时,在开始标签和结束标签上,获得标签名。 getText():数据类型是:XmlPullParser.TEXT时,如果当前位置是文本数据,用这个方法,可以去除文本内容。 getAttributeCount():获得属性的数量。 getAttributeName():获得属性名。 getAttributeValue():获得属性值。 getAttributeValue(命名空间,属性名):命名空间,属性名:获得指定属性名称对应的值。 ④XmlSerializer生成XML:向用户申请外部存储权限:WRITE_EXTERNAL_STORAGE setOutput(Writer out):设置输出流。 setOutput(Writer out,编码):设置输出流并指定字符编码。 startDocument(编码,是否是独立文件):输出头标签,true表示不依赖其他文档。 startTag():输出开始标签。 attribute():输出属性。 text():输出文本。 endTag():输出结束标签。