XML编程
- 格式:doc
- 大小:3.02 MB
- 文档页数:66
ActionScript编程读取XML元素值作用:读取XML对象中指定元素或所有元素的值,以便对这些值进行操作。
说明:使用E4X中的点运算符(.)和后代存取器运算符(..)可以访问XML对象中子元素的值,只需在点运算符(.)后面紧跟元素的名称即可,例如:var xml:XML = <User><Name>Jun</Name></User>;trace();//输出:Jun上面XML对象的树结构比较简单,对于较为复杂的XML树结构,可以使用多个点运算符(.),如下所示。
var xml:XML = <User><Name><firstName>Jun</firstName></Name></User>;trace(.firstName);//输出:Jun使用双点操作符(..)可以跳过一级访问,以简化操作步骤,如下所示。
var xml:XML = <User><Name><firstName>Jun</firstName></Name></User>;trace(xml..firstName);//输出:Jun当有多个元素具有相同的名时,可能通过索引值访问,这类似于数组,也使用中括号根据索引值访问指定的元素值,如下所示。
var xml:XML = <User><Name>Jun</Name><Name>Tian</Name></User>;trace([0]); //输出:Juntrace([1]); //输出:Tian如果想要访问指定名称的元素的值,但是并不知道其数量,这时可以使用for each循环遍历,如下所示。
for each ( var value:XML in xml.elementName) {trace(value);}另外,使用text()方法可以返回元素的值的XMLList对象,再通过toString()方法把文本节点转换为字符串,或是通过int()或Number()将其转换为其它类型,例如:var xml:XML = <body> text1 <hr/> text2 </body>;trace(xml.text()[0]); //text1trace(xml.text()[1]); //text2示例:创建一个名称为xml的XML对象,该对象中包含有5个相同名称的子元素。
xml编写标准一、概述XML(ExtensibleMarkupLanguage)是一种标记语言,用于描述和存储数据。
它被广泛应用于网络上的数据交换和信息共享。
为了提高XML文档的可读性、可维护性和可扩展性,本标准提供了一些编写XML 文档的基本规则和指导原则。
二、语法规则1.标签应成对出现,并且第一个标签的开始部分应与结束部分之间有一个空格。
2.标签名应使用小写字母,并且应该简洁明了。
3.属性应使用小写字母,并且应该用引号括起来。
4.文本内容应使用双引号括起来。
5.不要使用XML保留字作为标签名或属性名。
6.避免使用长字符串或复杂的表达式,可以使用CDATA段来处理。
三、文档结构1.根元素应作为XML文档的唯一容器,所有其他元素都应包含在该元素之内。
2.每个元素都应该有一个明确的开始标签和结束标签,并且标签名应该准确地描述该元素的内容。
3.元素内的文本内容应该用适当的空格和换行符分隔开,以提高可读性。
4.避免使用嵌套的元素来重复描述同一内容,可以使用属性或子元素来替代。
5.每个元素都应该有一个唯一的ID,以便于引用和跟踪。
四、数据类型1.数值型数据应该使用整数或浮点数类型,并使用适当的单位进行描述。
2.日期和时间数据应该使用标准的日期和时间格式,并使用XML 日期时间类型进行描述。
3.字符串数据应该使用引号括起来,并使用适当的分隔符进行分隔。
4.布尔型数据应该使用true或false表示。
五、命名约定1.标签名应该具有描述性,能够清晰地表达该元素的内容和目的。
2.属性名应该具有描述性和简洁性,能够清晰地表达该属性的含义和用途。
3.不要使用具有特殊含义的字符作为标签名或属性名的开头或结尾。
4.使用描述性的命名约定可以提高可读性和可维护性。
六、样例以下是一个符合本标准的XML文档样例:```xml<?xmlversion="1.0"encoding="UTF-8"?><data><itemid="1"><name>产品A</name><price>¥100</price><quantity>5</quantity></item><itemid="2"><name>产品B</name><color>红色</color><size>L</size><stock>10</stock></item></data>```以上样例中,根元素为"data",包含了两个"item"元素,每个元素都包含了一个唯一的ID、名称、价格、数量等信息。
XML:用来描述带有关系的数据常见应用:用作软件的配置文件XML语法文档声明:<?xml version="1.0" ?><?xml version="1.0" encoding="gb2312" standalone="yes" ?>注意:<?和?>之间不能有空格encoding属性:当version,encoding,standalone出现的时候standalone必须在encoding后面元素:1,值XML文件中出现的标签,有包含标签体的标签,不含标签体的标签2,对于标签中出现的所有空格和换行,XML解析程序都会当做标签内容进行处理3,元素命名规范a,严格区分大小写b,不能以数字或"_"开头c,不能以xml或等开头d,不能包含空格e,名称中不能包含":"f,一个XML文档必须有且仅有一个根元素属性:1,可以有多个属性,每个属性要有自己的名称和取值2,一定要用双引号或单引号引起来3,可以改成用子元素的形式来描述注释:注意:a,xml声明之前不能有注释b,注释不能嵌套-----------格式良好的XML文档:有且仅有一个根标签--------------CDAT A区:<![CDA TA[' ']]按照原格式输出,不用解析执行,当做原始内容处理转义字符:&,>,<,",'需要使用转义字符&smp;,<,>,$quot;,'处理指令:Processing Instruction作用:用来只会解析引擎如何解析XML文档被容示例:<?xml-stylesheet type="text/css" href="1.css" ?> 通知XML解析引擎应用CSS文件显示XML文档内容注意:处理指令必须以<?开头,?>结尾(声明语句就是最常见的一种处理指令) XML约束:可以编写一个文档来约束一个XML文档的书写规范,这个文档称之为约束文档常用约束技术XML DTD (文档类型定义)XML SchemaDTD约束:(DTD文档只能保存为UTF-8或Unicode)DTD 可以是外部文件(推荐),也可以在XML文档内部编写内部<!DOCTYPE dtdName[.........]>外部<!DOCTYPE dtdName 地址(system|intenet) "路径">元素约束:声明一个元素:<!ELEMENT 元素名称类别><!ELEMENT bookName (@PCDA TA)><!ELEMENT p (#PCDA TA)><!ELEMENT 元素名称(元素内容)><!ELEMENT Book (bookName,auhor,publich)*><!ELEMENT tr (tr|td)*><!ELEMENT 元素名称EMPTY><!ELEMENT br EMPTY><!ELEMENT 元素名称ANY><!ELEMENT div ANY>属性约束:<!A TTLIST 元素名称属性名称属性类型默认值><!A TTLIST Book type CDA TA实体定义:引用实体:在DTD中定义,在XML文档中使用参数实体:在DTD中定义和使用XML编程X ML解析方式分为两种:JAXP(SUN)和开源解析JAXP:DOM(Document Object Model文档对象模型)SAX(Simple API for XML)开源:Dom4jXML解析器:Crimson(sun),Xerces(ibm),Aelfred2(dom4j)XML解析开发包JAXP,JDom,Dom4jJAXP->Dom读取:1,通过API获取解析器2,调用解析的方法3,使用Dom树进行遍历DocumentBuilderFactory.newInstance()-->DocumentBuilderFactoryDocumentBuilderFactory.newDocumentBuilder()-->DocumentBuilderDocumentBuilder.parse(File|String|InputStream)-->DocumentDocument.getElementsByTag();修改:添加添加节点:创建节点,Node.appendChild()在指定位置添加:Document.insertBefore(newChild,refChild)删除:获取属性:Node接口中没有定义直接通过名称来获取属性值的方法所有转型成Element (String getAttribute(String))添加属性:创建属性对象(Attr Document.createAttribute(String))添加属性到某个节点()删除属性##########遍历XML文档中所有节点###############NamedNodeMap map=element.getAttributes()###########################################S AX, 不能做增删改SAX解析原理:JAXP总结:DOM:优点:功能全,操作相对简单,DOM树缺点:由于在解析的时候要一次性构建DOM树,如果XML过大,那么会导致内润溢出(致命)SAX:优点:操作实在简单,而且解析是基于事件的,开发人员之需要面向事件处理类就可以缺点:只能查找,而且查找指定元素相当麻烦(致命)。
ActionScript编程XML组成与声明一个格式规范的XML文档应当遵守W3C的标准(XML1.0)的语法要求,它由序言、文档主体(由一个或多个元素组成,其形式为一个可能包含字符数据的文档树)和尾部3个部分组成,下面将对序言部分和尾部部分进行详细介绍。
1.序言XML文档以序言开始,用来表示XML数据的开始、描述字符的编码方法、为XML解析器和应用程序提供其它一些配置信息。
序言部分包含XML文档的声明和注释,其中声明在XML文档中是必不可少的,而注释的主要目的就是方便对文档的理解和阅读。
XML声明是一种处理指令,它告诉浏览器或其它处理程序这个文档是XML文档。
XML声明必须处于XML文档的第一行,前面不能有空白、注释或其它的处理指令。
XML的声明格式如下所示:<?xml version = "1.0 " encoding = "Code " standalone " yes/no " ?>在上面的XML声明中,xml标签包含有3种属性,其详细介绍如下所示。
●version 该属性不能被省略且必须在属性列表的第一位,他表示文档遵守的XML规范的版本号,该属性值一般为1.0。
虽然目前最新版本为1.1,但推荐使用W3C于2000年发布的XML 1.0版。
●encoding 该属性可选,指定了文档的编码系统,即规定了XML文档采用哪种字符集进行编码,常用的编码系统为UTF-8和GB2312。
如果在XML声明中没有指定encoding属性的值,该文件的默认值为UTF-8编码,如果encoding属性值设置为GB2312,则标记以及标记的内容只可以使用ASCII字符和中文,声明方法如下所示:<?xml vaersion = "1.0" encoding = "GB2312">●standalone 该属性可选,表示该XML文档是否附带DTD文件,属性值为yes或no。
Python处理XML文件的自动化解决方案在当今的数字化时代,数据的处理和交换变得日益重要。
XML(可扩展标记语言)作为一种常用的数据格式,广泛应用于各种领域,如Web 服务、配置文件、数据存储等。
而 Python 作为一种强大而灵活的编程语言,为处理 XML 文件提供了丰富的工具和方法。
本文将详细探讨如何使用 Python 实现处理 XML 文件的自动化解决方案。
首先,让我们来了解一下 XML 文件的基本结构。
XML 文件由标签、属性和文本内容组成。
标签用于定义数据的结构,属性用于提供关于标签的额外信息,而文本内容则是实际的数据。
例如,`<person name="John Doe">25</person>`就是一个简单的 XML 片段,其中`<person>`是标签,`name` 是属性,`John Doe` 是属性值,`25` 是文本内容。
Python 中有多种方式可以处理 XML 文件,其中最常用的是`xmletreeElementTree` 模块。
这个模块提供了一系列的函数和类,使我们能够方便地读取、修改和写入 XML 文件。
要读取 XML 文件,我们可以使用`parse` 函数。
以下是一个简单的示例代码:```pythonimport xmletreeElementTree as ETtree = ETparse('examplexml')root = treegetroot()```在上述代码中,我们首先导入了`xmletreeElementTree` 模块,并将其简称为`ET`。
然后,使用`parse` 函数读取了名为`examplexml` 的文件,并通过`getroot` 函数获取了 XML 文件的根元素。
获取到根元素后,我们可以通过遍历子元素来访问 XML 文件中的数据。
例如,如果我们的 XML 文件结构如下:```xml<students><student id="1"><name>Alice</name><age>20</age></student><student id="2"><name>Bob</name><age>21</age></student></students>```我们可以使用以下代码来遍历学生信息:```pythonfor student in rootfindall('student'):student_id = studentget('id')name = studentfind('name')textage = studentfind('age')textprint(f"Student ID: {student_id}, Name: {name}, Age: {age}")```除了读取数据,我们还可以使用 Python 来修改 XML 文件。
读写XML的四种方法XML(eXtensible Markup Language)是一种用于表示和传输数据的标记语言。
它具有良好的可读性和扩展性,被广泛应用于Web开发、数据交换和配置文件等领域。
在读写和处理XML数据时,有许多方法可供选择。
本文将介绍四种常见的读写XML的方法:DOM、SAX、JDOM、和XMLStreamReader/XMLStreamWriter。
1. DOM(Document Object Model):DOM是一种基于树形结构的解析器,它将整个XML文档加载到内存中,并将其表示为一个对象树。
在DOM中,每个XML元素都被表示为一个节点(Node),可以通过节点的属性和方法对其进行操作。
读取XML文档时,可以使用DOM解析器将其转换为一个DOM树,然后通过节点的方法访问和修改树结构。
写入XML文档时,可以通过创建和修改节点来构建DOM树,并使用DOM解析器将其保存为XML文档。
使用DOM读取XML文档的基本步骤如下:- 创建一个DocumentBuilderFactory对象。
- 根据DocumentBuilderFactory对象创建一个DocumentBuilder对象。
- 使用DocumentBuilder对象解析XML文档,并返回一个Document对象。
- 通过Document对象的方法遍历和操作XML文档的节点。
使用DOM写入XML文档的基本步骤如下:- 创建一个DocumentBuilderFactory对象。
- 根据DocumentBuilderFactory对象创建一个DocumentBuilder对象。
- 使用DocumentBuilder对象创建一个Document对象。
- 通过Document对象的方法创建和添加元素节点、属性节点等。
- 使用TransformerFactory和Transformer对象将Document对象保存为XML文档。
DOM的优点是易于使用和理解,可以方便地遍历和修改XML文档。
万能的数据传输格式——XML目录万能的数据传输格式——XML (1)一、历史起源 (2)1、发展史 (2)2、什么是XML (2)3、XML与HTML区别 (3)4、XML应用场景 (3)5、XML在实际开发中的应用 (4)二、编写合法的XML (4)1、Zend Studio软件使用 (4)1)软件破解 (4)2)软件界面 (5)3)创建工程 (5)4、软件配置 (6)2、快速入门 (9)1)描述人的信息(demo01.xml) (9)2)描述书的信息(demo02.xml) (11)3、编写合法的XML文档 (11)1)文档声明 (11)2.1)元素(标记、节点) (11)2.2)元素命名规则: (12)3)元素属性 (12)4)文档注释 (12)5)特殊字符 (13)6)CDATA区段 (13)7、处理指令PI (14)三、XML在GPS导航中的实际应用 (16)四、DTD约束文档 (17)1、为什么要使用DTD约束 (17)2、什么是DTD约束文档 (17)3、DTD文档分类 (17)1)内部DTD (18)2)外部DTD (18)3)公用DTD (19)4、DTD校检器 (19)5、DTD约束语法 (20)1)定义元素 (20)2)定义属性 (27)3)定义实体 (31)五、DTD综合案例——产品DTD (33)一、历史起源1、发展史gml(1969) :通用标记语言IBM砖家-软件要具有高度的可移植性,必须要具有统一的标准sgml(1985) :标准通用标记语言html(1993) :w3c实现不同平台,不同浏览器之间对同一网页的显示缺点:兼容性问题xml(1998) :w3c可扩展标记语言面试题:什么是XML,主要功能是什么?答:可扩展标记语言,主要功能是实现对数据的传输与存储。
2、什么是XML●XML●全称:Extensible Markup Language●中文名:可扩展标记语言●用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型,允许用户对自己的标记语言进行定义的源语言(自定义)。
HTML结构:<html><head></head><body></body></html>XML结构:<网页><头部></头部><身体></身体></网页>3、XML与HTML区别1)html标签不能自定义,从标签上不能达到“见词知意”的目的<table><tr><td><font color=’red’>Nokia手机</font></td></tr></table><phone>Nokia手机</phone>2)html将数据与格式绑定在一起<data>数据</data>3)不同浏览器解html不同4)html语法要求不严格<ul><li>Nokia手机<li>小米手机</ul>xml语法要求严谨<li>Nokia</li>4、XML应用场景1)充当程序间数据交互的中间件PHP XML VC2)配置文件config.phpPHP JAVA C#config.php config.java config.aspxconfig.xml3)充当小型数据库xml将来可能会代替数据库php+oraclephp+xml :金山快译、MSN4)规范数据格式(DTD)咨询部编号姓名学生问题1 张老师大锤XML是什么?教学部5、XML在实际开发中的应用二、编写合法的XML1、Zend Studio软件使用1)软件破解将压缩包中的jar文件复制到软件安装目录下的plugins文件夹中并覆盖同名文件即可破解。
2)软件界面3)创建工程创建工程的两种方式①创建一个空白工程②已存在项目导入4、软件配置1)字体设置2)编码设置3)工作区设置我们设置的默认工作区不要和我们apache默认htdocs目录放在一起,否则系统在我们创建项目或导入项目时,系统会自动认为项目已存在,如已经设置了默认工作区,请按如下方式更改2、快速入门1)描述人的信息(demo01.xml)2)xml文件两种运行方式①直接打开浏览器,输入网址即可②可以通过鼠标右键——打开方式——浏览器方式打开xml文件即可2)描述书的信息(demo02.xml)3、编写合法的XML文档●文档声明●元素●元素属性●注释●特殊字符●CDATA区段●处理指令1)文档声明基本语法:<?xml version="1.0" encoding="UTF-8"?>version:xml版本号,目前最新版为1.0版encoding:编码格式standalone 是否独立默认yes如果xml文件与dtd约束文件一起运行则不独立,反之,则独立2.1)元素(标记、节点)一个标签分为起始和结束标签(不能省略)<li>Nokia</li> 或<li />一个标签中可以嵌套若干子标签,但所有标签必须合理的嵌套,不允许有交叉嵌套<div><font>Nokia手机</font></div>一个XML文档必须有且仅有一个根标签,其他标签都是这个根标签的子标签2.2)元素命名规则:①元素(标签)的名称可以包含字母、数字、减号、下划线和英文句点正确:<abc></abc>错误:<123></123>②严格区分大小写;正确:<abc></abc>错误:<Abc></abc>③只能以字母或下划线开头;正确:<abc123></abc123>错误:<123abc></123abc>④名称字符之间不能有空格或制表符;正确:<abc></abc>错误:<a bc></a bc>⑤名称字符之间不能使用冒号本身是没有问题的,但是官方不推荐3)元素属性①一个元素可以有多个属性②属性值一定要用引号(单引号或双引号)引起来③属性名称的命名规范与元素的命名规范相同④元素中的属性是不允许重复的⑤标签属性所代表的信息也可以被改成用子元素的形式来描述4)文档注释基本语法:<!--注释内容-->注:XML声明之前不能有注释,注释不能嵌套示例代码(demo03.xml)5)特殊字符在xml编写时,经常会遇到以下特殊字符示例代码(demo04.xml)6)CDATA区段CDATA:Character Data作用:把标签当做普通文本内容基本语法:<![CDATA[内容]]>问题:什么时候使用特殊字符转义,什么使用CDATA区段呢?答:对于内容比较少的情况,我们可以直接通过特殊字符转义即可对于如文章描述、文章内容等内容比较多的情况,可以采用CDATA区段7、处理指令PI作用:用来指挥软件如何解析XML文档。
语法:必须以“<?”作为开头,以“?>”作为结尾。
常用处理指令:xml指令<?xml ?>xml-stylesheet指令例:<?xml-stylesheet type="text/css“ href=“style.css"?>type:文档类型href:外部css样式路径demo04.xmlstyle.css运行效果:三、XML在GPS导航中的实际应用1、了解RSS编写规范参考RSS2.0语言规范.doc2、创建xml文档,并输入文档声明3、定制rss结构(详细请参考rss.xml)运行效果:四、DTD约束文档1、为什么要使用DTD约束2、什么是DTD约束文档XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等。
什么是DTDDocument Type Definition文档类型定义约束XML的书写规范格式良好的XML:遵循XML语法的XML(合法的XML文档)有效的XML:遵循DTD约束文档的XML (合理的XML文档)合理的XML一定是合法的XML,但是合法的XMl不一定是合理的XML3、DTD文档分类内部DTD外部DTD公用DTD1)内部DTD在XML文档中编写的DTD文档我们就称之为内部DTD内部DTD基本语法:<!DOCTYPE 根元素[DTD约束…]>示例代码:(demo05.xml)2)外部DTD在XML文档外部定义的DTD文档,我们称之为外部DTD(*.dtd文档)外部DTD文档引用语法:<!DOCTYPE 根元素SYSTEM “外部DTD的Uri路径”>demo05.xml代码:demo05.dtd代码:运行效果:3)公用DTD基本语法:<!DOCTYPE 根元素PUBLIC “DTD标识名” “公用DTD的URI”>公用DTD文件不需要我们编写,因为其都是由第三方权威机构编写,我们只需要遵循该约束即可。
4、DTD校检器默认情况下,所有浏览器都没有校检DTD文档功能,其只能判断XML文档是否合法,如果想进行DTD约束文档的校检,必须借助微软提供的DTD校检器,代码如下:示例代码:注:以上代码只能在IE浏览器中运行,其他浏览器是无法使用ActiveXObject这个类的,另外该文件必须通过鼠标右键——打开方式——IE浏览器打开运行。
运行效果如下:5、DTD约束语法定义元素定义属性定义实体1)定义元素基本语法:<!ELEMENT 元素名称元素类型>注:在编写定义元素时,一定要从根元素开始一级一级向下定义【元素类型定义】:(#PCDATA) :该类型可包含任何字符数据,但是不能包含任何子元素EMPTY:该类型不能包含子元素和文本,但可以有属性ANY:该类型可以包含任何在DTD定义的元素内容(通常用于根元素)【子元素定义】:(子元素) :定义子元素只能出现一次(子元素1,子元素2,……) :定义子元素出现的顺序以及出现的次数为1次(子元素*) :定义子元素出现的次数为0或多次(子元素+) :定义子元素出现的次数为1到多次(子元素?) :定义子元素出现的次数为0或1次(子元素1|子元素2) :定义互斥元素①<!ELEMENT note (header,(message|body))><note><header></header><message></message></note>或<note><header></header><body></body></note>②<!ELEMENT note (header|message)*><note></note>或<note><header></header>…</note>或<note><message><message>…</note>或<note><header></header>…<message></message>…</note>2)定义属性基本语法:<!ATTLIST 元素名称属性名称属性类型默认值>①属性类型CDATA 字符或数字(文本类型)(en1|en2|……) 枚举类型ID 属性唯一IDREF 引用#REQUIRED 必填#IMPLIED 可选#FIXED 固定值值默认值例1:设置属性类型为CDATA,默认值为#REQUIRED例2:设置属性类型为枚举类型,默认值为#IMPLIED例3:属性类型为ID类型例4:属性类型为IDREF引用类型例5:默认值为#FIXED运行效果:例6:属性的默认值为值类型问题:固定值与默认值之间有什么区别?答:固定值其值是固定的,当我们没有声明该属性时,系统会自动追加此属性到元素中。