我們先來了解下XML:
什麼是 XML呢?簡單來說可以總結爲下面幾點:
XML 指可擴展標記語言(EXtensible Markup Language)XML 的設計宗旨是傳輸數據
XML 標籤沒有被預定義。您需要自行定義標籤。
XML 是 W3C 的推薦標準
主要是應用Web前端開發的許多方面,常用語簡化數據的存儲和共享。
每種語言都有自己的語法規則,XML也不例外,XML的語法是:所有XML的元素都必須有關閉標籤
XML 標籤對大小寫敏感,必須正確地嵌套
XML規則:
- 新特性應該基於 HTML、CSS、DOM 以及 JavaScript。
- 減少對外部插件的需求(比如 Flash)
- 更優秀的錯誤處理
- 更多取代腳本的標記
- HTML5 應該獨立於設備
- 開發進程應對公衆透明
新特性
HTML中的一些有趣的新特性:
- 用於繪畫的 canvas 元素
- 用於媒介回放的 video 和 audio 元素
- 對本地離線存儲的更好的支持
- 新的特殊內容元素,比如 article、footer、header、nav、section
- 新的表單控件,比如 calendar、date、time、email、url、search
要寫的內容:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<!-- 這本書一般般 -->
<book lang="zh" >
<isbn>ABC-135-4BC</isbn>
<name>十萬個爲什麼</name>
<price>80.00</price>
<author> "匿 <> 名" </author>
<description>
<![CDATA[
這是一本好書:
1. 價錢 < 平均價錢
2. 鱷魚爲什麼吞石塊?
鱷魚的胃很柔軟,它要藉助石塊來磨碎食物中的骨頭和硬物。鱷魚吞食的石塊重量約爲其體重的1%。
3. 海魚爲什麼不鹹?
海洋魚類具有很強的排鹽能力,它們除了從腎排掉一小部分鹽外,還有專門的排鹽器官,即位於鰓片中的“泌氯細胞”。
4. 水果爲什麼能解酒?
水果裏含有機酸,而酒裏的主要成分是乙醇,有機酸能與乙酸相互作用而形成酯類物質從而達到解酒的目的。
5. 含羞草爲什麼會“害羞”?
含羞草的葉枕裏含有充足的水分,有外物觸到葉子時,葉枕中的水流向兩邊,葉枕癟了,葉子就垂下來了。
]]>
</description>
</book>
<book lang="zh" >
<isbn>ABC-145-4BC</isbn>
<name>愛你一萬年</name>
<price>180.00</price>
<author>匿名</author>
</book>
</books>
<books>
<!-- 這本書一般般 -->
<book lang="zh" >
<isbn>ABC-135-4BC</isbn>
<name>十萬個爲什麼</name>
<price>80.00</price>
<author> "匿 <> 名" </author>
<description>
<![CDATA[
這是一本好書:
1. 價錢 < 平均價錢
2. 鱷魚爲什麼吞石塊?
鱷魚的胃很柔軟,它要藉助石塊來磨碎食物中的骨頭和硬物。鱷魚吞食的石塊重量約爲其體重的1%。
3. 海魚爲什麼不鹹?
海洋魚類具有很強的排鹽能力,它們除了從腎排掉一小部分鹽外,還有專門的排鹽器官,即位於鰓片中的“泌氯細胞”。
4. 水果爲什麼能解酒?
水果裏含有機酸,而酒裏的主要成分是乙醇,有機酸能與乙酸相互作用而形成酯類物質從而達到解酒的目的。
5. 含羞草爲什麼會“害羞”?
含羞草的葉枕裏含有充足的水分,有外物觸到葉子時,葉枕中的水流向兩邊,葉枕癟了,葉子就垂下來了。
]]>
</description>
</book>
<book lang="zh" >
<isbn>ABC-145-4BC</isbn>
<name>愛你一萬年</name>
<price>180.00</price>
<author>匿名</author>
</book>
</books>
解析文件的代碼:
package cnte.du.android_xml;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import android.os.Bundle;
import android.app.Activity;
import android.content.res.AssetManager;
import android.util.Log;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/**
* 監聽
* @param view
*/
public void doClick(View view){
switch (view.getId()) {
case R.id.button1:
try {
parseBooksXml();
} catch (Exception e) {
e.printStackTrace();
}
break;
}
}
/**
* 解析圖書xml文檔 assets/books.xml
*/
private void parseBooksXml() throws Exception{
//讀取assets目錄下的books.xml文檔
AssetManager assetManager = getAssets();
InputStream is = assetManager.open("books.xml");
//1. 獲取Document對象
SAXReader reader = new SAXReader();
Document document = reader.read(is);
//2. 獲取根節點
Element root = document.getRootElement();
//獲取root下的所有book標籤
List<Element> books = root.elements();
//遍歷
for(Element e : books){
//e代表一個book標籤 解析並打印子標籤的內容
Iterator<Element> ite = e.elementIterator();
while(ite.hasNext()){
Element childElement = ite.next();
Log.i("info", "標籤名:"+childElement.getName()+" 標籤內容:"+childElement.getTextTrim());
}
}
}
}
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import android.os.Bundle;
import android.app.Activity;
import android.content.res.AssetManager;
import android.util.Log;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/**
* 監聽
* @param view
*/
public void doClick(View view){
switch (view.getId()) {
case R.id.button1:
try {
parseBooksXml();
} catch (Exception e) {
e.printStackTrace();
}
break;
}
}
/**
* 解析圖書xml文檔 assets/books.xml
*/
private void parseBooksXml() throws Exception{
//讀取assets目錄下的books.xml文檔
AssetManager assetManager = getAssets();
InputStream is = assetManager.open("books.xml");
//1. 獲取Document對象
SAXReader reader = new SAXReader();
Document document = reader.read(is);
//2. 獲取根節點
Element root = document.getRootElement();
//獲取root下的所有book標籤
List<Element> books = root.elements();
//遍歷
for(Element e : books){
//e代表一個book標籤 解析並打印子標籤的內容
Iterator<Element> ite = e.elementIterator();
while(ite.hasNext()){
Element childElement = ite.next();
Log.i("info", "標籤名:"+childElement.getName()+" 標籤內容:"+childElement.getTextTrim());
}
}
}
}
學藝不精,有不對的請多多指點迷津。