`
剑晨java
  • 浏览: 23487 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

XML

阅读更多
   第一部分:XML即可扩展标记语言,是由w3c组织发布的,XML出现的根本目标在于描述生活中经常出现的有关系的数据。在XML语言中,它允许用户自定义标签。一个标签用于描述一段数据,一个标签分为开始标签和结束标签,在开始标签和结束标签之间,又可以使用其他标签描述其他数据,以此来实现数据关系的描述。起初,XML的发布是为了取代HTML,可那么多年过去,XML依然未能成功,于是现在XML常用作配制文件。
     xml分为文档声明,元素,属性,注释,CDATA区、特殊字符和处理指令。最简单文档声明,<?xml vorsion="1.0" ?>(不能出现全角空格) ,用encoding属性说明文档的字符编码,<?xml vorsion="1.0" enconding="GB2312" ?>( <?xml vorsion="1.0" enconding="UTF-8" ?>此时记事本存储时也用UTF-8,不会出现错误),用standalone属性说明文档是否独立, <?xml vorsion="1.0" enconding="GB2312" standalone="yes" ?>。
      1)元素,标签。含标签体,<a>...</a>,不含标签体,<a>...</a>,简写为<a/>。格式良好文档必须有且仅有一个根标签。xml标签中出现的空格或换行,xml解析程序都当作
         标签内容处理。命名可以包含字母、数字以及其他一些可见字符,但必须遵守:区分大小写、不能以数字或下划线开头、不能以xml(XML或Xml等)开头、不能含有空格、
         不能含有冒号。每个标签都可以有多个属性,每个属性都有它的名称和取值。
      2)CDATA区,有些内容不想被解析引擎解析,而当作原始内容处理,放置在CDATA区。<![CDATA[内容]]>。
      3)转义字符。&  &amp,<  &lt,>  &gt,"  &quot,'  &apos。
      4)用来指挥解析引擎如何解析xml文件。stylesheet。例如,应用css文件解析xml文档。
example1.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="1.css" ?>
<body>
   <a>
     <a1 id="a1">中国</a1>
     <a2 id="a2">俄国</a2>
   </a>
   <b>
     <b1 id="b1">美国</b1>
     <b2 id="b2">日本</b2>
   </b>
</body>


example1.css
@CHARSET "UTF-8";
a1{
	font-size:300px;
        color:red;
}
a2{
	font-size:200px;
        color:bule;
}
b1{
	font-size:100px;
        color:green;
}
b2{
	font-size:50px;
        color:black;
}



    第二部分:XML约束。在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,称之为XML约束。通常使用的约束技术是XML DTD或者XML Schema。
XML DTD。
<?xml version="1.0" encoding="UTF-8"?>
 <!ELEMENT 书架 (书+)>
 <!ELEMENT 书 (书名,作者,售价)>
 <!ELEMENT 书名 (#PCDATA)>
 <!ELEMENT 作者 (#PCDATA)>
 <!ELEMENT 售价 (#PCDATA)>


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 书架 SYSTEM "3.dtd">
<书架> 
  <书> 
    <书名>java编程基础</书名>  
    <作者>张孝祥</作者>  
    <售价>39.00元</售价> 
  </书>  
</书架>

<!DOCTYPE 书架 SYSTEM "3.dtd">意思是声明此XML遵循的DTD文档。还有另一种写法,可以把约束写在XML文档顶部。如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 书架 [<!ELEMENT 书架 (书+)>
               <!ELEMENT 书 (书名,作者,售价)>
               <!ELEMENT 书名 (#PCDATA)>
               <!ELEMENT 作者 (#PCDATA)>
               <!ELEMENT 售价 (#PCDATA)>]>
<书架>
      <书>
          <书名>java就业培训教程</书名>
          <作者>张孝祥</作者>
          <售价>39.00元</售价>
      </书>
      <书>
          <书名>java就业培训教程</书名>
          <作者>张孝祥</作者>
          <售价>39.00元</售价>
      </书>
</书架>

    元素类型可以是元素内容或类型。
         1)若为元素类型,则需要用()括起来。<!ELEMENT 书(书名,作者,售价)>
        2)若为元素类型,则直接书写,DTD规范定义了如下几种类型。
             EMPTY,用于定义空元素,例如<br/><hr/>。
             ANY,表示元素内容为任意类型。
     元素内容可以使用以下方式,描述内容组成关系
          1)用逗号分隔,表示内容出现顺序必须与声明时一致。
          2)用|分隔,表示任选其一,即多个只能出现一个。
      元素内容也可以使用+,?,*等符号表示出现次数。
          1)+:一次或多次出现。
          2)?:至多一次出现。
          3)*:零次或多次出现。
      可以使用圆括号批量设置。
      属性设置说明:
          1)#REQUIRED:必须设置该属性。
          2)#IMPLIED:可以设置也可以不设置。
          3)#FIXED:该属性取值为一个固定值。
          4)直接使用默认值。
      属性值类型:
          1)CDATA:普通文本字符串。
          2)ENUMERATED:枚举。
          3)ID:id。
          4)ENTITY:实体。

     schema定义和描述xml文档的看结构和内容的模式语言。
      1)schema符合xml语法结构。 后缀名.xsd,其根节点名称是Schema。
      2)schema支持比dtd更多的数据类型,并支持自定义数据类型。
           3)schema无实体,比dtd等复杂。
    4)可引入多个schema。
    编写一个XML Schema约束文档后,通常需要把这个文件中声明的元素绑定到一个URL地址上,在XML Schema技术中有一个专业术语描述此过程,即把XML Schema文档声明的元素绑定到一个名称空间上,以后XML文件就可以通过这个URL(名称空间)来告诉解析引擎,XML文档别写的元素来自哪里,被谁约束。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.javanet.cn" elementFormDefault="qualified">
	<xs:element name='书架'>
		 <xs:complexType>
		 	<xs:sequence maxOccurs='unbounded'>
		 		<xs:element name='书'>
		 		<!-- complexType放的元素为复杂类型 -->
		 			<xs:complexType>
		 			<!-- 顺序出现 -->
		 				<xs:sequence>
		 					<xs:element name='书名' type='xs:string'/>
		 					<xs:element name='作者' type='xs:string'/>
		 					<xs:element name='售价' type='xs:string'/>
		 				</xs:sequence>
		 			</xs:complexType>
		 		</xs:element>
		 	</xs:sequence>
		 </xs:complexType>
	</xs:element>
</xs:schema>

      其中,targetNamespace绑定名称空间,elementFormDefault="qualified"将所有元素绑定,若取值为unqualified只绑定根节点,使用javanet指向声明的名称,便于后面对名称空间的引用 ,complexType放的元素为复杂类型 ,sequence顺序出现。
<?xml version="1.0" encoding="UTF-8"?>
<javanet:书架 xmlns:javanet="http://www.javanet.cn" 
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xsi:schemaLocation="http://www.javanet.cn 1.xsd">
			<javanet:书>
		<javanet:书名>xxx</javanet:书名>
		<javanet:作者>xxx</javanet:作者>
		<javanet:售价>xxx</javanet:售价>
	</javanet:书>
</javanet:书架>

   声明书架来自 "http://www.javanet.cn"这个名称空间,受此名称空间绑定的Schema约束,而名称空间是虚的,必须通过要通过schemaLocation告诉来自哪个Schema文档.而schemaLocation的名称空间"http://www.w3.org/2001/XMLSchema-instance"这是个著名的名称空间,默认知道这个名称空间对应的Schema文档。  

  Schema声明语法:
    (1)定义简易元素:<xs: element name="xxx" type="yyy">,此处xxx指元素名称,yyy指元素类型。
         简易元素的默认值和固定值。
    <xs:element name="color" typr="string" default="red">,缺省值为red。
    <xs:element name="color" typr="string" fixed="red">,固定值为red。
    (2)属性:拥有属性的元素称为复合类型。<xs:attribute name="xxx" type="yyy">,同样拥有默认值和固定值。此外,默认属性是可选的,如需规定必选,则使用use。<xs:attribute name="xxx" type="yyy" use="required">
    (3)限定:
          a.对值得限定。
 <xs:element name="age">
              <xs:simpleType>
                  <xs:restriction base="xs:integer">
                           <xs:minInclusive value="0">
                           <xs:maxInclusivevalue="120">  
                  <xs:restriction>
              </xs:simpleType>
          </xs:element>

                 b.对一组值的限定。
  <xs:elsement name="car">
        <xs:simpleType>
            <xs:restriction base="xs:integer">
                 <xs:enumeration value="Audi">
                 <xs:enumeration value="BMV">
                 <xs:enumeration value="Golf">
             </xs:restriction>
        </xs:simpleType>
   </xs:element>
c...
     (3)复杂元素。<employee>
                    <firstname>xx</firstname>
                    <lastname>xx</lastname>
                  </employee>
         在Schema有两种方式声明复杂元素。
          a。通过命名此元素,可直接对“employee”元素进行声明。
         
。<xs:element name="employee">
               <xs:complexType>
                   <xs:sequence>
                      <xs:element name="firstname" type="xs:string">
                       <xs:element name="lastname" type="xs:string">
                    </xs:sequence>
               <xs:complexType>
            </element>

    b.“employee”元素可以直接使用type属性。
   
 <xs:element name="employee" type="personinfo"/>
               <xs:complexType name="personinfo">
                   <xs:sequence>
                      <xs:element name="firstname" type="xs:string">
                       <xs:element name="lastname" type="xs:string">
                    </xs:sequence>
               <xs:complexType>
  • 大小: 8.1 KB
分享到:
评论

相关推荐

    xml2axml反编译AndroidManafest文件

    使用java工具xml2axml.jar反编译AndroidManafest文件 通过xml2axml.jar工具反编译AndroidManafest文件 还原AndroidManafest.xml详细过程: 1、获取到apk 2、解压获取里面的AndroidManifest.xml文件 3、在xml2axml....

    maven的本地仓库配置文件settings.xml和项目中文件pom.xml.zip

    一、Idea关联的maven本地仓库配置文件settings.xml (1)必须使用默认文件名 D:\developsoft\javaweb\commonPlugins\maven\apache-maven-3.8.1_first\conf\settings.xml 二、Myeclipse关联的maven本地仓库配置文件...

    xml加密解密工具XMLEncryption

    xml加密(XML Encryption)是w3c加密xml的标准。这个加密过程包括加密xml文档的元素及其子元素,通过加密,xml的初始内容将被替换,但其xml格式仍然被完好的保留。 介绍 我们有3个加密xml的方法 1、仅仅使用对称...

    Tinyxml 源代码(VC6 & VS2005)

    TinyXML是一个简单小巧,可以很容易集成到其它程序中的C++ XML解析器。 它能做些什么 简单地说,TinyXML解析一个XML文档并由此生成一个可读可修改可保存的文档对象模型(DOM)。 XML的意思是“可扩展标记语言...

    XML与XMLSchema

    XML发展历史概述 XML文档组成元素 XML Schema组成元素 XML相关API

    vb6XML读写

    vb中读写XML文件实例Dim XMLDoc As DOMDocument Dim root As IXMLDOMNode Dim xlst As IXMLDOMNodeList, xlst1 As IXMLDOMNodeList Dim xn As IXMLDOMNode Dim xnf As IXMLDOMNode Dim xe As IXMLDOMElement Set ...

    Android APK xml 批量解密工具

    android开发中有时会想研究借鉴一下设计思路和UI风格,但解压apk包后 layout文件夹下xml文件一般都是加密的。在网上找到了一个工具,可以完美地解密xml文件,但这个工具的使用方法是:调cmd 然后...

    QT中读取XML文件三种方式 的实例

    XML(eXtensible Markup Language)是一种通用的文本格式,被广泛运用于数据交换和数据存储(虽然近年来 JSON 盛行,大有取代 XML 的趋势,但是对于一些已有系统和架构,比如 WebService,由于历史原因,仍旧会继续...

    纯C语言解析xml字符串

    纯C语言解析xml字符串,有实例,保证可用,含makefile xmlparse.c xmlparse.h testxml.c 目录:/export/home/chcard/testxml 日志:/export/home/chcard/log testxml.c 是一个测试用例,包含了常用的方法,并有注解 ...

    Altova XMLSpy2013简体中文版破解补丁

    Altova XMLSpy是一款业界最畅销的XML编辑器,这款XMLSpy2013重点新增了智能修复、Java应用程序无缝集成、集成外部程序等新功能,而且本站提供的是中文破解版,能给用户带来极大的方便。 Altova XMLSpy主要用于建模,...

    xml和java bean互相转换工具包(简单易用)

    xml 与 bean 互相转换 工具类 1、bean类的属性需要遵守BEAN规范,否则 无法 读存BEAN值。 2、bean类的属性如果 是集合 只支持数组以及List、Map、Set。 3、bean类属性(boolean除外)前面两个字母要么全部小写,要么...

    andxml xml解密工具

    andxml汉化版是一个xml文件反编译工具,可与APKTOOL反编译配合使用,APK文件使用APKTool反编译生成XML文件后,就可以直接通过它进行汉化编辑 注意: 1、一键机器翻译会造成某些代码出现翻译错误现象,请人工识别。...

    opencv+python 人脸识别的xml文件

    haarcascade_eye.xml haarcascade_eye_tree_eyeglasses.xml haarcascade_frontalcatface.xml haarcascade_frontalcatface_extended.xml haarcascade_frontalface_alt.xml haarcascade_frontalface_alt_tree.xml haar...

    XML - 实验(2) -- Schema

    《XML》实验任务书 【2】 XML Schema [实验目的] 1、学习如何使用XMLSPY集成开发环境完成XML Schema相关的开发工作。 2、掌握XML Schema与DTD之间的区别,能够完成两者之间的转换;掌握在XML Schema中如何定义元素...

    让开源项目TinyXml支持Unicode(wchar_t)

    开源项目TinyXml项目所涉及的字符编码说明如下: 1. TinyXml函数调用接口的字符型参数,仅支持`窄字符`格式(char*),不兼容`宽字符`格式(wchar_t*)。 2. TinyXml函数提供的Xml内容解析功能,仅支持以ANSI编码和UTF...

    java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xml

    java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava...

    易语言 xml解析 易语言 xml解析 教程 带源码

    易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 教程 带源码

    tinyxml与tinyxml2

    tinyxml与tinyxml2两个版本的源码,操作xml很方便,解压可以直接使用.

    动态生成Rss文件 Xml操作 Xml文件的修改

    动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件...

    Maven pom.xml与settings.xml详解

    主要介绍了Maven pom.xml与settings.xml详解的相关资料,这里对pom.xml与setting.xml详细的研究说明,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics