XML学习

32 篇文章 0 订阅

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>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值