XML語言api
XML語言:可擴展標記語言(HTML 超文本標記語言)瀏覽器
XML與HTML的差別主要在於其標記徹底是自定義的,咱們只須要遵循必定的語法結構便可。指針
其主要做用是:存儲配置信息和傳輸數據(用於數據交換)xml
特色:對象
1.xml文件後綴名:.xml(可以使用瀏覽器瀏覽)接口
2.xml文檔結構:序言(<?xml version="1.0" encoding="字符集">) + 數據部分事件
3.xml節點:分雙標記和單標記(開始標記--結束標記),根標記只能有一對,開始標記可包含屬性-->屬性名="屬性值"(同一標記屬性名不可重複)utf-8
4.xml的名字不能有空格,不能以數字、_、Xml、XML、xml開頭開發
5.不要再標記內寫:<>&...文檔
解析方式:有SAX、DOM、DOM4J、JDOM、PULL等等,其中功能最強大的是DOM4J,開發安卓推薦使用PULL
------------PULL解析xml
PULL是一個基於事件解析xml的類和接口的組件api
使用JavaBean將獲取的數據打包成對象使用
JavaBean就是用來打包程序之間數據的組件
【解析XML文件-JavaBean】
//第一步:獲取一個PULL解析工廠
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
//第二步:經過PULL解析工廠,獲取PULL解析器對象
XmlPullParser parser=factory.newPullParser();
//第三步:給PULL解析器設置解析源
parser.setInput(new FileInputStream("file/book.xml"), "utf-8");
//第四步:事件解析 int parser.next();//指針下移,返回事件 int parser.getEventType();//獲取當前事件 String parser.getName();//獲取當前元素/節點/標記的名字 String parser.getAttributeName(int index);//獲取元素指定下標的屬性名 String parser.getAttributeValue(int index);//獲取元素指定下標的屬性值 String parser.getText();//獲取文本字符串 指針所在事件:(返回的事件狀態-字段-下標序號) XmlPullParser.START_DOCUMENT 0 開始讀取文檔 XmlPullParser.END_DOCUMENT 1 結束讀取文檔 XmlPullParser.START_TAG 2 開始讀取元素(指針指向起始標記) XmlPullParser.END_TAG 3 結束讀取元素(指針指向結束標記) XmlPullParser.TEXT 4 開始讀取文本(節點間的文本) 【解析XML字符串-JavaBean】 同上-區別:設置解析源(由字節輸入節點流-->字符串輸入流,直接讀取String字符串) String xml="<books><book id='1'><bookName>西遊記</bookName><bookWriter>吳承恩</bookWriter></book></books>"; parser.setInput(new StringReader(String xml)); 【生成XML文檔】 //第一步:獲取一個PULL解析工廠 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); //第二步:經過PULL解析工廠,獲取PULL序列化對象,將字符串序列化爲xml格式 XmlSerializer ser=factory.newSerializer(); //第三步:給PULL序列化對象設置輸出源 ser.setOutput(new FileOutputStream("file/book.xml"), "utf-8");//文件不存在自動建立 事件寫入方法:(怎麼讀的,就怎麼寫進去) jx.startDocument("utf-8", true);//表示xml文檔的開始 jx.startTag(null, "books");//根節點的開始 jx.startTag(null, "book");//書籍節點的開始 jx.attribute(null, "id", "1"); jx.startTag(null, "bookName"); jx.text("西遊記"); jx.endTag(null, "bookName"); jx.startTag(null, "bookWriter"); jx.text("吳承恩"); jx.endTag(null, "bookWriter"); jx.startTag(null, "bookContent"); jx.text("唐僧耍猴"); jx.endTag(null, "bookContent"); jx.endTag(null, "book");//書籍節點的結束 jx.endTag(null, "books");//根節點的結束 jx.endDocument();//表示xml文檔的結束