XML指可扩展标记语言,为了传输数据,而不是显示数据。
注意只有当保存xml文件的编码与浏览器解析xml文件的编码相同时,xml才会被浏览器成功解析。
通常记事本保存文件的格式是gb2312,而浏览器默认解析xml格式为utf-8,而xml头部encoding是在设置浏览器的解析格式,若将记事本另存为utf-8,则可以改变原来xml格式。
你若使用myeclipse或其他开发工具,则不必担心此问题,无论设置字符编码为什么,浏览器都可以解析,因为开发工具会解决其余问题。
字符编码 gbk 20000个汉字 gb2312 5000个汉字,可以相互通用,但他们都不能与utf-8相互通用。
xml分为如下几个部分
xml文档声明:(必须置为第一行)
<?xml version="1.0" encoding="gb2312" ?>
元素:
一个合格的 xml 必须有仅只有一个根元素。
元素的命名规则与Java类似,不过不可以以xml或Xml开头,xml中不会忽视主题内容中的空格和换行,下面中后者比前者节约流量。
<中国>
<北京>
<海淀/>
</北京>
</中国>
<中国><北京><海淀/></北京></中国>
属性命名规则和元素一样,属性一定要用引号包起来,单引号,双引号都可以。
属性一定要写在开始标签。或者用子标签的形式来表示。
<Persons>
<person name="java">
</person>
</Persons>
注释<!-- -->不能嵌套
CDATA区内的内容不会被解析,只会保留原来的样式。 <![CDATA[ ]]>
<![CDATA[<last><<<<<<<</last>]]>
特殊字符
& & < < > > " " ' '
XML约束
格式良好的xml表示遵循xml语法,而遵循xml约束文档的xml表示有效的xml
xml约束可以约束 xml的元素,个数,顺序。
常见的约束
XML DTD , XML SCHEMA
引入外部DTD文档
1.当引入的DTD文档在本地时,采用如下方式
<!DOCTYPE 根元素 SYSTEM "book.dtd">
如<!DOCTYPE 书架 SYSTEM "book.dtd">
2.当引入的DTD文档在公共网络上,采用如下方式:
<!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档URL">
比如struts的dtd
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
DTD部分:
DTD定义元素
语法:<!ELEMENT 元素名称 使用规则>
<!ENTITY copyright "java"> 其中copyright 表示实体名称, java表示实体内容。
在xml中引用©right; 表示Java
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT AddressBook (Address+) >
<!ELEMENT Address (Name,Street,City,State,Country,Pin) >
<!ELEMENT Name (#PCDATA) >
<!ELEMENT Street (#PCDATA) >
<!ELEMENT City (#PCDATA) >
<!ELEMENT State (#PCDATA) >
<!ELEMENT Country (#PCDATA) >
<!ELEMENT Pin (#PCDATA) >
<!ATTLIST Name solutation (Mr.| Miss. | Mrs.) #REQUIRED>
<!ATTLIST Address id CDATA #REQUIRED>
<!ATTLIST Address isLocal (true| false) #IMPLIED>
<!ENTITY Country_name "China">
XML Schema部分
他比xml dtd要强大些,也更复杂些,支持namespace,它比dtd支持更多的数据类型,并支持用户自定义类型。
这是标准的xml格式,但他的扩展名为xsd。
xml schema不能像dtd一样定义实体,比DTD更复杂,但它是w3c的组织标准,正逐步替代DTD。
1.xml的约束技术 作用是 规范xml文件的书写 (标签 属性 文本)
2.android用到的约束技术是schema
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns="http://www.Addresses.com" targetNamespace="http://www.Addresses.com">
<xsd:element name="AddressBook">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Address" maxOccurs="unbounded">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="AddressType">
<xsd:attribute name="id" type="xsd:integer" use="required"/>
<xsd:attribute name="isLocal">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="true"/>
<xsd:enumeration value="false"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="AddressType">
<xsd:sequence>
<xsd:element name="Name">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="solutation">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Mr."/>
<xsd:enumeration value="Miss."/>
<xsd:enumeration value="Mrs."/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Street" type="xsd:string"/>
<xsd:element name="City" type="xsd:string"/>
<xsd:element name="State" type="xsd:string"/>
<xsd:element name="Country" type="xsd:string"/>
<xsd:element name="Pin" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
对应的xml:
<?xml version="1.0" encoding="UTF-8"?>
<AddressBook xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.Addresses.com AddressBook.xsd" xmlns="http://www.Addresses.com">
<Address isLocal="true" id="1">
<Name solutation="Mr.">Sam</Name>
<Street>QuanKouRd.</Street>
<City>ShangHai</City>
<State>US</State>
<Country>China</Country>
<Pin>111</Pin>
</Address>
<Address isLocal="false" id="2">
<Name solutation="Mrs.">Ram</Name>
<Street>JiaHangRd.</Street>
<City>ShangHai</City>
<State>US</State>
<Country>India</Country>
<Pin>222</Pin>
</Address>
</AddressBook>