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
定義(定義好後可使用快捷鍵):
在文檔類型定義在一個領域內,由組織、企業、技術領域,指定的XML規範。
對根標籤和內部所有標籤進行定義
屬性 CDATA #REQUIRED
屬性 CDATA #IMPLIED
>
] >
引用:
系統內部規範:、在dtd文件中只插入之間的內容。
對當前軟件系統公開統一的規範:
二、java/android中三大處理XML解析、創建工具
SAX:
㈠SaxParserFactory
負責創建Sax解析器的工廠(需要先建立工廠,再建立解析器。)
㈡SaxParser
Sax解析器,用來解析xml文檔
㈢DefaultHandler
解析過程中,用來處理從xml提取出來的數據(xml中從頭到尾提取數據)
DOM4J:
①第三方解析XML開發包,在內存中生成一個樹狀結構,API參考官方文檔。
②XPath
用路徑的形式來表示數據的位置
/email/to/to-email:定位到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");
…………
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():輸出結束標籤。
注意事項
XML編寫時要規範
android中集成了Pull處理XML的工具,所以要重點掌握。