Xml 格式数据的生成和解析

本文介绍了XML的基本概念,包括XML的起源、W3C组织及其作用。重点讲解了XML与HTML、属性文件的区别,以及XML文档的组成部分,如文档声明、转义字符和CDATA区。此外,还探讨了XML在Android中的应用,通过实例展示了如何生成和解析XML文件,包括使用XmlSerializer和Pull解析器的方法,并对比了Pull解析与SAX解析的异同。
摘要由CSDN通过智能技术生成

相关阅读

  1. XML约束
  2. Xml 格式数据的生成和解析
  3. XML解析器

什么是XML

XML全称为Extensible Markup Language, 意思是可扩展的标记语言,它是 SGML(标准通用标记语言)的一个子集。

XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的。

W3C在1998年2月发布1.0版本;
W3C在2004年2月发布1.1版本,但因为1.1版本不能向下兼容1.0版本,所以1.1没有人用。同时,在2004年2月W3C又发布了1.0版本的第三版。我们要学习的还是1.0版本!!!

W3C组织

W3C是万维网联盟(World Wide Web Consortium)英文的缩写,它成立于1994年10月,以开放论坛的方式来促进开发互通技术(包括规格、指南、软件和工具),开发网络的全部潜能。万维网联盟(W3C)从1994年成立以来,已发布了90多份Web技术规范,领导着Web技术向前发展。

W3C认为自身不是官方组织,因此将它正式发布的规范称为推荐(建议)标准,意思是进一步标准化的建议,但是由于组织自身的权威性往往成为事实上的标准。

XML的作用

  • 程序的配置文件(这也是最后大家使用XML最常见的目的);
  • 数据交换:不同语言之间用来交换数据;
  • 小型数据库:用来当数据库存储数据。

XML与HTML比较

  • HTML的元素都是固定的,而XML可以自定义元素;
  • HTML用浏览器来解析执行, XML的解析器通常需要自己来写(因为元素是自定义的);
  • HTML只能用来表示网页,而XML可以做的事情很多。

XML和properties(属性文件)比较

  • 属性文件只能存储平面信息,而XML可以存储结构化信息;
  • 解析属性文件只需要使用Properties类就可以了,而解析XML文档是很复杂的。

XML文档的组成部分

  • XML文档声明;重要
  • XML处理指令;看完了,就可以忘了!
  • XML元素;最重要
  • XML特殊字符和CDATA区;一看就会
  • XML注释。不看都会
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<students>
    <student number="1001">
        <name>zhangSan</name>
        <age>23</age>
        <sex>male</sex>
    </student>
    <student number="1002">
        <name>liSi</name>
        <age>32</age>
        <sex>female</sex>
    </student>
    <student number="1003">
        <name>wangWu</name>
        <age>55</age>
        <sex>male</sex>
    </student>
</students>

什么是xml文档声明

可以把xml文档声明看成是xml文档说明。
最简单的xml文档声明:< ?xml version=”1.0”? >
注意,XML是区别大小写,这一点不同与HTML!

xml文档声明结构

  • version属性
    用于说明当前xml文档的版本,因为都是在用1.0,所以这个属性值大家都写1.0,version属性是必须的;

  • encoding属性
    用于说明当前xml文档使用的字符编码集,xml解析器会使用这个编码来解析xml文档。encoding属性是可选的,默认为UTF-8。注意,如果当前xml文档使用的字符编码集是gb2312,而encoding属性的值为UTF-8,那么一定会出错的;

  • standalone属性
    用于说明当前xml文档是否为独立文档,如果该属性值为yes,表示当前xml文档是独立的,如果为no表示当前xml文档不是独立的,即依赖外部的文件。默认是yes

  • 没有xml文档声明的xml文档,不是格式良好的xml文档;

  • xml文档声明必须从xml文档的1行1列开始。

xml的中文乱码问题解决

保存时候的编码和设置打开时候的编码一致,不会出现乱码

Xml 格式数据的生成和解析

转义字符

因为在xml文档中有些字符是特殊的,不能使用它们作为文本数据。例如:不能使用“<”或“>”等字符作为文本数据,所以需要使用转义字符来表示。
例如<a><a></a>,你可能会说,其中第二个<a>是a元素的文本内容,而不是一个元素的开始标签,但xml解析器是不会明白你的意思的。
把<a><a></a>修饰为<a>&lt;a&gt;</a>,这就OK了。

Xml 格式数据的生成和解析

转义字符都是以“&”开头,以“;”结束。这与后面我们学习的实体是相同的。

CDATA区(CDATA段)

当大量的转义字符出现在xml文档中时,会使xml文档的可读性大幅度降低。这时如果使用CDATA段就会好一些。

在CDATA段中出现的“<”、“>”、“””、“’”、“&”,都无需使用转义字符。这可以提高xml文档的可读性

&lt;a>&lt;![CDATA[&lt;a>]]>&lt;/a>

在CDATA段中不能包含“]]>”,即CDATA段的结束定界符

XML实战案例

使用xml 作为数据交互的载体是Android 中非常重要的功能,比如天气预报数据、短信备份数据、通讯录数据都可以以xml 的格式通过网络传输。

为了演示Xml 数据的操作,我模拟了一个短信备份的案例。

需求:界面如下图所示。上面是三个Button,前两个分别对应两种不同方式生成xml,第三个Button点击后解析备份的xml 文件,然后将数据展现在下面的ScrollView 中。短信数据是模拟的假数据。

Xml 格式数据的生成和解析

生成的xml 格式如下

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
    <smses>
      <sms>
        <address>5554</address>
        <body>我是内容<>0</body>
        <time>1445595309201</time>
      </sms>
      <sms>
        <address>5555</address>
        <body>我是内容<>1</body>
        <time>1445595309201</time>
        </sms>
 </smses>

编写布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="click1"
        android:text="生成xml1"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="click2"
        android:text="生成xml2"/>

    <Button
        android:layout_width="match_parent"
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值