我们先来了解下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());
}
}
}
}
学艺不精,有不对的请多多指点迷津。