XML解析

来源:互联网 发布:一元云购v8源码 编辑:程序博客网 时间:2024/06/06 12:44

我们先来了解下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> &quot;匿 &lt;&gt; 名&quot; </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());
}
}
}
}


学艺不精,有不对的请多多指点迷津。

1 0
原创粉丝点击