XML学习

来源:互联网 发布:mac连不上手机热点 编辑:程序博客网 时间:2024/05/29 02:04

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>]]>

特殊字符

&  &amp;  <  &lt;   >  &gt;  "  &quot;    '   &apos;

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中引用&copyright; 表示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>




0 0