xml语言基础---简单介绍
- 格式:doc
- 大小:512.00 KB
- 文档页数:16
XML (可扩展标记语言) 是一种用于标记电子文档结构和内容的语言。
它被广泛应用于各种领域,例如网页设计、文档管理、数据交换等。
而document.xml则是XML语言中的一个重要概念,它在各种领域中都有着重要的作用。
本文将介绍document.xml语法的基本概念和用法,帮助读者更好地理解和应用这一重要的技术。
一、document.xml的概念document.xml是一种XML文件,用于描述文档的结构和内容。
它由一系列标签(tag)和数据(data)组成,可以用来表示各种类型的文档,如网页、电子书、报告等。
通过使用document.xml,用户可以轻松地创建、编辑和管理各种类型的文档。
二、document.xml的基本语法1. 标签在XML中,标签是用来表示文档结构的基本元素。
一个标签由开始标记和结束标记组成,如<book>和</book>。
开始标记用于表示标签的起始位置,结束标记用于表示标签的结束位置。
标签还可以包含属性,用来描述标签的附加信息,如<book id="001">表示具有id属性的book标签。
2. 数据在XML中,数据是标签中的内容,用来表示文档的具体信息。
数据可以是文本、数字、图像等形式的信息,它们被包含在开始标签和结束标签之间。
在<book>标签中可以包含书名、作者、出版日期等信息。
3. 注释在XML中,注释用来对文档进行解释和说明。
注释以<!--开始,以-->结束,可以插入到标签之间或者标签外部,用来提供关于文档内容和结构的补充信息。
三、document.xml的应用1. 网页设计在网页设计中,document.xml可以用于描述网页的结构和内容。
通过使用document.xml,可以将网页的各个元素(如标题、段落、图像等)以结构化的方式表示出来,从而更好地组织和管理网页的内容。
2. 文档管理在文档管理系统中,document.xml可以用来表示和存储各种类型的文档,如报告、合同、说明书等。
也是一个元素,元素除了包含元素还可以包含文本信息。
元素也可以含有属性,比如property就具有name属性。
XML 元素可以在开始标签中包含属性,属性 (Attribute) 提供关于元素的额外(附加)信息。
属性通常提供不属于数据组成部分的信息,但是对需要处理这个元素的应用程序来说却很重要。
XML 属性必须加引号,属性值必须被引号包围,不过单引号和双引号均可使用。
如果属性值本身包含双引号,那么有必要使用单引号包围它,或者可以使用实体引用。
1.2.3. 大小写敏感XML对大小写是敏感的,这一点不象HTML。
在XML中,标记< Letter> 和标记 <letter> 是不一样的。
因此,打开和结束标记的大小写应该写成相同的:1.2.4. 元素必须有关闭标签XML要求每个元素必须由起始标签和关闭标签组成。
关闭标签与起始标签的名字相同,写法上多一个“/”例如:<Letter> 只有起始标记是不行的。
<Letter></Letter> 必须要有关闭标签1.2.5. 必须有根元素XML要求必须有根元素,所谓根元素就是不被其它元素包围(不含有父元素)。
并且根元素只能有一个。
01.<d a t a s o u r c e i d ="d b _o r a c l e "> 02.…03. </d a t a s o u r c e >01.<l e t t e r >…</l e t t e r >02. <L e t t e r >…</L e t t e r >01.<d a t a s o u r c e i d =“d b _o r a c l e ”> 根元素 02.<p r o p e r t y n a m e ="u r l ">03.j d b c :t h i n @192.168.0.26:1521:t a r e n a 04.</p r o p e r t y >05.<p r o p e r t y n a m e ="d b U s e r ">o p e n l a b </p r o p e r t y >06. <p r o p e r t y n a m e ="d b P w d ">o p e n 123</p r o p e r t y >07.</d a t a s o u r c e>08.这里不能再定义与d a t a s o u r c e平级的元素!1.2.6. 元素必须正确嵌套XML要求所有元素必须正确的嵌套。
XML(Extensible Markup Language)是一种元标记语言,可以用来描述数据。
XML提供了一种标准化的方式,使程序和应用程序可以有效地共享数据,而不受数据类型和平台的限制。
XML的语法包括文档格式、元素、属性和实体等。
一、XML文档格式XML文档是一个标记文档,包含一个XML声明,一个根元素和其他元素。
XML声明用来声明文档的版本号、编码方式和其他信息。
根元素是文档的起始点,它可以包含其他元素和属性。
其他元素是根元素的子元素,可以包含其他元素和属性。
属性是元素的附加信息,可以用来描述元素的语义。
二、XML元素XML元素是文档的基本单位,用来描述数据。
元素可以包含子元素,也可以包含属性。
元素的起始标签和结束标签之间的内容是元素的内容。
元素的内容可以是文本、其他元素、属性或实体。
三、XML属性XML属性是元素的附加信息,可以用来描述元素的语义。
属性的值可以是字符串、数值、日期或其他类型的数据。
属性的名字应该使用驼峰命名法,即首字母小写,其余字母大写。
属性的值应该使用双引号括起来,以区分属性的名字和值。
四、XML实体XML实体是一个名称,可以用来表示一个完整的文本或其他数据。
实体可以用来替换XML中的文本或其他数据,以提高XML文档的可读性和可维护性。
五、XML语法错误XML文档的语法错误可能会导致XML解析器无法解析文档。
常见的XML语法错误包括:1. 缺少元素或属性的起始标签或结束标签。
2. 元素或属性的名字错误,或者名字不符合驼峰命名法。
3. 元素或属性的值不符合XML的语法规则,例如字符串值缺少引号或实体值缺少引号。
4. 属性的名字与元素的名字相同。
5. 文档格式不正确,例如缺少XML声明或根元素。
六、XML文档解析XML文档可以使用XML解析器解析,以获取文档的内容。
XML解析器可以使用SAX(Simple API for XML)或DOM(Document Object Model)等方式解析文档。
XML从⼊门到深⼊(超详细)⼀:什么是XML XML (eXtensible Markup Language)指可扩展标记语⾔,标准通⽤标记语⾔的⼦集,简称XML。
是⼀种⽤于标记电⼦⽂件使其具有结构性的标记语⾔。
XML可以标记数据、定义数据类型,可以允许⽤户对⾃⼰标记语⾔进⾏⾃定义,是对⼈和机器都⽐较友好的数据承载⽅式;XML其前⾝是SGML(标准通⽤标记语⾔)。
传统的系统已经远远不⾜以来表达复杂的信息,简单的语⾔根本⽆法表达出⼀些细微的差别,需要更完整的语⾔来表达⽹络世界⾥⽇益丰富复杂的信息内涵 XML - 可扩展标记语⾔便由此诞⽣,它不像HTML追求美观的效果,⽽不重视实际交流应⽤现象,所以XML语⾔的出现核⼼是⽤来展⽰及数据的交互,它的出现把⽹络表达的语⾔集合推进了⼀⼤步,XML传递信息,具有跨平台的特性(如:WebService)它作为数据交互和⽹络计算基础,尤其是在电⼦商务应⽤上的出⾊表现,现在已经没⼈怀疑它给信息社会带来的⾰命性影响(随着2021的到来JSON也是⼀个不错的选择)<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><Students><Student><name>蚂蚁⼩哥</name><address>安徽六安</address></Student><Student><name>欧阳康康</name><address>安徽六安</address></Student></Students>1:编写XML注意事项①:XML 中的每个元素都是成对出现的,有开始和结束,⾃闭和标签除外,但是都得有 '/'结束标志如:<student>xxxxx</student> ⾃闭和:<student name='xxx' />②:每个XML⽂档都有且只有⼀个根元素(Root Element)③:XML标签对⼤⼩写敏感④:XML必须正确嵌套⑤:同级标签以所缩进对齐⑥:元素名称可以包含字母,数字,但不能以数字开头⑦:元素名称中不能含有空格或者 ' : '号⑧:如出现特殊字符需要转义如:<,>,",',&....2:使⽤XML的优缺点优点:①:XML是使⽤信息⾃描述的新语⾔(没有约束的情况下)②:信息共享(⾃定义数据格式,⽽且很容易使⽤⼯具读写)③:数据传递(⽀持各种通道传递数据,如WebService就使⽤XML传输数据)④:数据重⽤、分离数据和显⽰、⽂档包含语义、⽅便阅读有⾯向对象的树形结构缺点:①:数据量⼤是传输效果不好,因为XML定义了和数据⽆关的标签3:XML基本语法第⼀⾏必须是XML的声明<?xml ?>version:xml的版本,必须设定,当前只有'1.0'版本encoding:当前xml⾥⾯的数据格式,默认UTF-8standalone:标记是否是⼀个独⽴的xml,默认yes如果设置 no 表⽰这个XML不是独⽴的⽽是依赖于外部的DTD约束⽂件(后⾯说)<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><Students><Student><name>蚂蚁⼩哥</name><address>安徽六安</address></Student></Students>⼆:XML专⽤标记 XML其实是有专⽤的标记,也可以理解是XML的基本语法,但是这些语法你在看HTML语法时也看到过,因它们都属于⼀个⼤家族,只是应⽤的⽅向不⼀样⽽导致的差异有部分不⼀样1:XML注释 语法:<!-- 这是⼀个注释 --><?xml version="1.0" encoding="UTF-8" standalone="yes" ?><School><!--定义学⽣对象这是⼀个注释--><Student id="st01" name="张三" age="23"/></School>①:注释⾥的内容不要出现 --②:不要把注释写在元素中间如<Student <!--这⾥注释报错--> ></Student>③:注释不可嵌套2:XML处理PI指令 其实XML⾥的PI指令⼤家可以理解为XML设置样式的,但是考虑到XML是⽤于存储数据的载体,所以这个指令⽤的也不多 语法:<?⽬标指令?> 如引⼊CSS样式:<?xml-stylesheet type='css类型' href='引⼊css样式地址'> CSS类型可以设置 type='text/css' type='text/xsl'<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!--引⼊PI指令注意只能放在头部并引⼊style.css样式--><?xml-stylesheet type='text/css' href='./style.css' ?><School><!--定义学⽣对象这是⼀个注释--><Student><name>蚂蚁⼩哥</name></Student></School><!--CSS样式-->name {font: normal 500 22px "微软雅⿊";color:#f69;}3:XML之CDATA节 ⽤于把整段⽂本解析为纯字符串数据⽽不是标记的情况,其实包含在CDATA节中的特殊字符<、>、&都会当作字符展⽰<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><School><!--定义学⽣对象这是⼀个注释--><Student><!--使⽤<![CDATA[xxx]]>可以把特殊字符当作⽂本--><name><![CDATA[我是⼀个"⽂本":想不到把]]></name></Student></School> 那么问题来的,如果我不使⽤CDATA节包裹的话在⽂本区域输⼊<,>等就会和关键字符冲突,我们需要使⽤转义<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><School><!--定义学⽣对象这是⼀个注释--><Student><!--这⾥的蚂蚁⼩< > 哥报错 <>⼲扰,我们要使⽤转义--><!--<name>蚂蚁⼩<>哥</name>--><name>蚂蚁⼩<>哥</name></Student></School><!--常⽤⽹页转义字符 xml也可以使⽤--><!--显⽰结果描述实体名称实体编号空格  < ⼩于号 < <> ⼤于号 > >& 和号 & &" 引号 " "' 撇号 '(IE不⽀持) '¢分 ¢ ¢£ 镑 £ £¥ ⽇圆 ¥ ¥§ 节 § §© 版权 © ©® 注册商标 ® ®× 乘号 × ×÷ 除号 ÷ ÷-->XML中转义字符的使⽤三:核⼼DTD语法约束1:什么是DTD,为什么使⽤DTD DTD是⽂档类型定义(Document Type Definiyion),它是⽤来描述XML⽂档结构,⼀个DTD⽂档会包含如下内容:元素(ELEMENT):的定义规则,描述元素之间的关系规则属性(ATTLIST):的定义规则,可以定义具体的标签内部属性为什么使⽤DTD:①:DTD⽂档与XML⽂档实例关系如类与对象关系②:有了DTD,每个XML⽂件可以携带⼀个⾃⾝格式描述③:有了DTD,不同组织的⼈可以使⽤⼀个通⽤DTD来交换数据④:应⽤程序可以使⽤⼀个标准的DTD校验从外部世界接受来的XML是否是⼀个有效标准XML⑤:可以使⽤DTD校验⾃⼰的XML数据2:DTD定义⽂档规则(DOCTYPE)DTD⽂档的声明及引⽤有三种:内部DTD⽂档:<!DOCTYPE 根元素[定义元素属性等等内容]>外部DTD⽂档:<!DOCTYPE 根元素 SYSTEM 'DTD⽂件路径'>内外部DTD⽂档结合:<!DOCTYPE 根元素 SYSTEM 'DTD⽂件路径'[定义元素属性等等内容]><?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!--注:此时我这⾥⾯的 ELEMENT 定义元素的我后⾯介绍--><!DOCTYPE Student[<!ELEMENT Student (name)><!ELEMENT name (#PCDATA)>]><Student><name>蚂蚁⼩哥</name></Student>内部定义DTD⽂档<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!DOCTYPE Student SYSTEM './st.dtd'><Student><name>蚂蚁⼩哥</name></Student><!--下⾯是⽂件 st.dtd--><!DOCTYPE Student[<!ELEMENT Student (name)><!ELEMENT name (#PCDATA)>]>外部定义DTD⽂档<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!DOCTYPE Student SYSTEM './st.dtd'[<!ELEMENT Student (name,age,sex)><!ELEMENT sex (#PCDATA)>]><Student><name>蚂蚁⼩哥</name><age>23</age><sex>男</sex></Student><!--外部引⽤的st.dtd⽂件--><?xml version="1.0" encoding="UTF-8" ?><!--这⾥不能写DOCTYPE,因为这个可以当作元素引⽤,具体规则在上⾯定义--><!ELEMENT name (#PCDATA)><!ELEMENT age (#PCDATA)>内外部定义DTD⽂档3:DTD元素的定义(ELEMENT)语法:<!ELEMENT 元素名称(NAME) 元素类型(COUTENT)>注:ELEMENT关键字元素名称:就是⾃定义的⼦标签名称元素类型:EMPTY:该元素不能包含⼦元素和⽂本,但是可以有属性,这类元素称为⾃闭和标签ANY:该元素可以包含任意在DTD中定义的元素内容#PCDATA:可以包含任何字符数据,设置这个就不能包含⼦元素了,⼀般设置具体value混合元素类型:只包含⼦元素,并且这些⼦元素没有⽂本混合类型:包含⼦元素和⽂本数据混合体<!-- 定义空元素EMPTY --><?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!DOCTYPE Student[<!ELEMENT Student EMPTY>]><!--约束为空元素所以写成⾃闭和标签,--><Student/><!-- 定义组合元素(student,teacher)并为每个元素设置类型(#PCDATA) --><?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!DOCTYPE School[<!ELEMENT School (student,teacher)><!ELEMENT student (#PCDATA)><!ELEMENT teacher (#PCDATA)>]><School><student>我是学⽣</student><teacher>我是⽼师</teacher></School><!-- 设置任意元素ANY 虽然student元素内部没有再设置元素⽽设置ANY,那我就可以在编写任意⼦元素,前提在⾥⾯有定义 --><?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!DOCTYPE School[<!ELEMENT School (student)><!ELEMENT student ANY><!ELEMENT name (#PCDATA)><!ELEMENT address (#PCDATA)>]><School><student><name>蚂蚁⼩哥</name><address>安徽六安</address></student></School><!-- 元素组合及混合,可以使⽤通配符 --><?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!DOCTYPE School[<!ELEMENT School (student*,teacher?)><!ELEMENT student (#PCDATA)><!ELEMENT teacher (#PCDATA)>]><School><student>我是学⽣A</student><student>我是学⽣B</student></School>DTD元素定义具体代码通配符:() ⽤来元素分组如:(a|b|c),(d,e),f 分三组| 在列表中选⼀个如(a|b)只能选⼀个表⽰a|b必须出现并⼆选⼀+ 该对象⾄少出现⼀次或多次如(a+) 该元素可以出现多次* 该对象允许出现0次到多次如(a*) 该元素可以不出现或出现多次表⽰可出现⼀次或者不出现(a?) a可以出现,或者不出现, 常⽤按照顺序出现(a,b,c) 表⽰依次a,b,c4:DTD属性的定义(ATTLIST)语法:<!ATTLIST 元素名称属性名称类型属性特点>元素名称:我们⾃定义的元素名称属性类型:我们为元素上添加⾃定义属性类型:CDATA:任意字符(理解为任意字符的字符串)ID:以字母开头唯⼀值字符串,IDREF/IDREFS:可以指向⽂档中其它地⽅声明的ID类型值(设置此值是可以在⽂档上存在的)使⽤IDREFS时可以使⽤空格隔开NMTOKEN/NMTOKENS:NMTOKEN是CDATA的⼀个⼦集,设置该属性时只能写英⽂字母、数字、句号、破折号下划线、冒号,但是属性值⾥⾯不能有空格 NMTOKENS:它是复数,如果设置多个值由空格隔开 Enumerated: 事先定义好⼀些值,属性的值必须在所列出的值范围内属性特点:#REQUIRED表⽰必须设置此属性#IMPLIED表⽰此属性可写可不写#FIXED value表⽰元素实例中该属性的值必须是指定的固定值#Default value为属性提供⼀个默认值<!-- 第⼀种写法 --><?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!DOCTYPE School[<!ELEMENT School (student*)><!ELEMENT student EMPTY><!--定义了⼀个id属性类型为ID 必须值--><!ATTLIST student id ID #REQUIRED><!--设置了name属性为任意字符的字符串必须值--><!ATTLIST student name CDATA #REQUIRED ><!--设置address 类型为多个常规字符串且不需要⼀定存在此属性--><!ATTLIST student address NMTOKENS #IMPLIED><!--设置srcID 该属性的值只能从id上⾯上取--><!ATTLIST student srcID IDREFS #IMPLIED>]><School><student id="st001" name="蚂蚁⼩哥"/><student id="st002" name="欧阳;*)*^%$:⼩⼩" address="安徽_六安安徽_合肥"/><student id="st003" name="许龄⽉" srcID="st001 st002"/></School><!-- 第⼆种写法 --><?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!DOCTYPE School[<!ELEMENT School (student*)><!ELEMENT student EMPTY><!--简便写法,全部放在⼀起写--><!--设置了name属性为任意字符的字符串不⼀定要设置此属性,但是设置必须按照指定的值--> <!ATTLIST studentid ID #REQUIREDname CDATA #FIXED '我们名字都⼀样'address CDATA '默认都是安徽'sex (男|⼥) #REQUIRED>]><School><student id="st001" sex="男" name="我们名字都⼀样"/><student id="st002" sex="⼥"/><student id="st003" sex="男" name="我们名字都⼀样"/></School>DTD的属性定义具体代码5:DTD实体定义(ENTITY)实体分类:普通内部实体,普通外部实体,内部参数实体,外部参数实体语法:普通内部实体定义:<!ENTITY 实体名 "实体值">普通外部实体引⼊:<!ENTITY 实体名 SYSTEM "URI/URL">内部参数实体定义:<!ENTITY % 实体名 "实体值">外部参数实体引⼊:<!ENTITY % 实体名 SYSTEM "URI/URL">⽰例定义:<!ENTITY name "蚂蚁⼩哥"><!ENTITY address "安徽六安">⽰例XML⾥使⽤:<name>&name;</name>使⽤范围:定义实体分为内部实体(定义在当前xml⽂件)和外部实体(定义在外部dtd⽂件⾥)<!-- 内部普通实体 --><?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!DOCTYPE Student[<!ELEMENT Student (name,address)><!ELEMENT name (#PCDATA)><!ELEMENT address (#PCDATA)><!ENTITY name "蚂蚁⼩哥"><!ENTITY address "安徽六安">]><Student><name>&name;</name><address>&address;</address></Student>DTD实体定义代码6:使⽤命名空间(Namespace) 避免元素名冲突,使⽤URL作为XML的Namespaces(这样也有约束和提⽰好处) 语法:xmlns:[prefix]="URL" 元素和属性都可以应⽤命名空间 XML的元素名是不固定的,当两个不同类型的⽂档使⽤同样的名称描述两个不同类型的元素的时候就会出现命名冲突<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><h:table xmlns:h="/1999/xhtml"><h:tr><h:td>名称A</h:td><h:td>名称B</h:td></h:tr></h:table>四:核⼼Schema语法约束1:什么是XML Schema XML Schema描述了XML⽂档的结构。
xml语言结构
XML(可扩展标记语言)是一种标记语言,用于描述数据的结构和内容。
它使用一系列简单的标记来描述数据,这些标记可以告诉计算机数据的类型、含义和结构。
XML语言结构主要包括以下部分:
1.元素:XML文档由各种元素组成,每个元素都可以包含其他元素。
元素以起始标记开
始,以结束标记结束。
例如,<example>是一个元素,</example>是该元素的结束标记。
2.标记:标记是用来定义元素的关键字,例如<example>和</example>。
标记必须成对出现,
且必须有一个起始标记和一个结束标记。
3.属性:属性是元素的附加信息,它们由名称和值组成,并放在起始标记中。
例如,<example
attr="value">中,“attr”是属性名称,“value”是属性值。
4.文本内容:元素可以包含文本或其他元素,文本内容是XML文档中的实际数据。
5.命名空间:为了解决不同XML文档中可能存在的命名冲突问题,可以使用命名空间来
区分不同的元素和属性。
6.DTD(文档类型定义):DTD用来定义XML文档的结构和内容。
它提供了有关文档中
允许的内容和结构的规则。
7.XML Schema:XML Schema是另一种定义XML文档结构和内容的方式,它提供了更强
大和灵活的数据类型和验证机制。
总的来说,XML语言结构使得数据可以被标准化、组织和共享,被广泛应用于各种领域,如网页开发、数据交换、配置文件等。
⼀、XML语⾔简介1、XML发展史1) gml:(1969)Generalized Markup Language通⽤标记语⾔:主要的⽬的是为了达到不同的电脑进⾏通讯的数据规范2) sgml(1985)标准通⽤标记语⾔3) html(1993)HyperText Markup Language :随着万维⽹的出现才出现的html语⾔,但是本⾝是有缺点的,例如其标记不能⾃定义,本⾝缺少⼀些含义;html没有真正的国际化4) xml():1998 Extensiable markup language(可扩展标记语⾔) w3c组织在html语⾔的基础上推出xml语⾔备注 :可扩展标记语⾔主要是给浏览器或者给⼀些语⾔观看的,但并不是纯粹的给浏览器看的,也可以给java、其他语⾔看,xml的编程是好多语⾔都可以使⽤的。
2、XML的常见应⽤1)xml的出现解决了程序间数据传输的问题:(数据传输的通⽤格式),⽤xml格式来传送数据,具有良好的可读性和可维护性2)xml可以做配置⽂件:⽐如tomcat服务器的Server.xml,web.xml;sturts中的sturts-config.xml⽂件;以及hibernate的hibernate.cfg.xml3)xml可以充当⼩型的数据库可使⽤xml⽂件做⼩型数据库,程序中会⽤到⼀些经常要⼈⼯配置的数据。
如果放在数据库中读取不合适(会增加数据库的维护⼯作),则可以考虑⽤xml来做⼩型数据库(⽐如msn中保存⽤户聊天记录就是⽤xml⽂件的),⽽且直接读取⽂件显然要⽐读取数据库快3、XML⽂件的构成:【1】 ⽂档声明<?xml vesion="1.0" enconding="gb2312"? standalone="yes"?>1) xml :表明该⽂件是xml⽂件2) version :表⽰xml的版本号3) enconding :⽂档的字符编码,⽤来告诉浏览器按照什么样的编码⽅式来解析,但是⽂件在存储的时候⽤的是ANSI,(在保存的时候可以进⾏不同的编码格式保存)编码问题:ANSI是American national standard insitute(美国国家标准协会)制定的⼀个编码格式,在不同的国家是不⼀样的,中国ansi对应的就是gb2312;在台湾ansi对应的可能就是gbk big54) standalone :⽂档定义是否独⽴使⽤(即这个xml⽂件是否和别的⽂件由配合使⽤)standalone="no"是默认的【2】 元素1)⼀个xml元素可以包含的内容:字母、数字以及其他⼀些可见字符,但是必须遵守下⾯⼀些规范: A、区分⼤⼩写,例如:<P><p> 是两个不同的标记 B、不能以数字或“_”(下划线)开头 C、不能包含空格 D、名称不能以数字开头,中间不能包含冒号,冒号是留给命名空间使⽤的 E、标签成对、空标签关闭、标签正确嵌套[2]元素/标签 的写法:2)备注: 不含标签体的两种写法:<age></age> 或者</age> 对于xml标签中出现的所有空格和换⾏,xml解析程序都会当做标签内容进⾏处理,例如下⾯两段内容的意义就不⼀样: 写法⼀:<stu>xiaoming</stu> 这种写法是标准的格式要求写法 写法⼆: <stu> xiaoming </stu>由于在xml⽂件中,空格和换⾏都作为原始内容被处理,所以,在编写xml⽂件中,要特别注意【3】属性 属性值⽤双引号括起来,或者⽤单引号括起来。
XML 简介• •Previous Page Next Page XML 被设计用来传输和存储数据。
被设计用来传输和存储数据。
HTML 被设计用来显示数据。
被设计用来显示数据。
应该掌握的基础知识: 应该掌握的基础知识:在您继续学习之前,需要对以下知识有基本的了解:• HTML / XHTML • JavaScript如果您希望首先学习这些项目,请在我们的 首页 访问这些教程。
什么是 XML?• XML 指可扩展标记语言(EXtensible Markup Language) • XML 是一种标记语言 标记语言,很类似 HTML 标记语言 • XML 的设计宗旨是传输数据 传输数据,而非显示数据 传输数据 • XML 标签没有被预定义。
您需要自行定义标签 自行定义标签。
自行定义标签 • XML 被设计为具有自我描述性 自我描述性。
自我描述性 • XML 是 W3C 的推荐标准XML 与 HTML 的主要差异XML 不是 HTML 的替代。
XML 和 HTML 为不同的目的而设计:XML 被设计为传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息,而 XML 旨在传输信息。
没有任何行为的 XMLXML 是不作为的。
是不作为的。
也许这有点难以理解,但是 XML 不会做任何事情。
XML 被设计用来结构化、存储以及传输信息。
下面是 John 写给 George 的便签,存储为 XML:<note><to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>这个标签有标题以及留言。
XML解析
一、XML基础
1)什么是XML
●XML是指可扩展标记语言(eXtensible Markup Language),它也是一种标
记语言,很类似HTML。
它被设计的宗旨是存储数据,而非显示数据。
●Html展示数据
●XML标签没有被预定义,需要用户自行定义标签。
●XML技术是W3C组织(World Wide Web Consortium万维网联盟)发布
的,目前遵循的是W3C组织于2000年发布的XML1.0规范。
●XML被广泛认为是继Java之后在Internet上最激动人心的新技术。
2)XML常见应用
二、XML语法
1)文档声明
2)元素
3)属性
4)注释
5)实体引用及CDATA区
6)处理指令(了解即可)
7)XML约束(了解即可)
之为XML约束。
●常用的约束技术XML DTD, XML Schema
●作为普通工程师,一般是使用别人的约束文件,而不会自己去写约束。
例如
使用SSH框架开始时用到的xml文件,均要受框架的提供的xml的约束文件的约束
三、SAX解析
XML解析方式主要有:
DOM(文档对象模型):将整个文件以树的结构存储到内存中,适合小文件,程序可读性高。
Dom4j
SAX(基于事件流的解析):省内存,程序可读性相比上述较差。
PULL(Android自带解析器):也是基于事件流的解析
本次,我们只学习SAX和PULL两种方式
正式来学习SAX解析
Simple APIs for XML,XML简单应用程序接口,在javax.xml.parsers包中,SAX解析是JDK自带的解析方式,包括一组接口和类
1)SAX解析原理
以事件驱动的方式解析,即找开始结束标签的方式
SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。
所以有两个关键点:顺序扫描,事件处理函数
2)案例:解析指定文件(标签无属性),并将文件中的信息存放到list
中--需要先创建XML文件
3)案例:解析指定文件(根标签有属性),并将文件中的信息存放到
list中
假设:我们给每个phone加一个id属性,那么在解析根节点的时候,就需要获取到id信息并赋值给对象。
四、PULL解析
在android系统中,很多资源文件中,很多都是xml格式,在android系统中解析这些xml的方式,是使用pul解析器进行解析的,它和sax解析一样,也是采用事件驱动进行解析的,同时,由于android内核已经内嵌了pull,所以我们不需要添加第三方的jar包来支持pull。
1)案例:解析XML文件(不带属性)
首先,需要jar包:kxml2-2.2.2.jar
具体实现步骤如下:
基本上跟sax的解析思路是一样的。
几个关键的方法强调下:
获取其状态码,区分现在是哪个事件源(文档开头,文档结尾,标签开头,标签结尾)
获取标签名称
获取标签的文本内容
让指针继续往下解析下一个事件源
2)案例:解析XML文件(带属性)
3)PULL vs SAX
Pull解析器和SAX解析器虽有相似性但也有区别,他们的区别为:SAX解析器的工作方式是自动将事件推入注册的事件处理器进行处理,因此你不能控制事件的处理主动结束;而Pull解析器的工作方式为允许你的应用程序代码主动从解析器中获取事件,正因为是主动获取事件,因此可以在满足了需要的条件后不再获取事件,结束解析。
五、作业
感谢下载!
欢迎您的下载,资料仅供参考。