XML和XMLSocket(一) -- XML的基础知识

前端之家收集整理的这篇文章主要介绍了XML和XMLSocket(一) -- XML的基础知识前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在这一篇里,我将为大家详细讲解Flash和服务器保持长连接的一种重要用法,也就是下面要说的XMLSocket类。这个方法广泛应用于实时的应用程序,例如在线聊天室或现在最火热的Flash网页游戏。使用XMLSocket,可以实现服务器端对客户端的数据推送!

在讲解XMLSocket之前,我先为大家讲解下,在AS3.0中,处理XML的方法。在AS3.0中,处理XML的方式和AS2.0完全不同了。不仅仅是代码的书写更容易,程序的效率也大大提高。

XML 是一种表示结构化信息的标准方法,可以用任何文本文件来书写,但我推荐大家使用FlashDevelop或者EditPlus工具,可以减少出错的几率。在AS3.0中,已经可以直接书写XML变量,但我还是比较喜欢用Load的方式加载外部XML文件

一、XML的基本结构

示例:

<card>

<root id = '1' type = 'a'>

<Cardcolor>黑桃</Cardcolor>

<Cardname>决斗</Cardname>

</root>

<root id = '2' type = 'b'>

<Cardcolor>梅花</Cardcolor>

<Cardname>雌雄双股剑</Cardname>

</root>

</card>

以上是一个标准的XML文档。XML文档一般由以下四部分组成:

1. 元素

元素是包含在开始标签和结束标签之间的内容。元素当中可以包含其他元素。

元素1:

<Cardcolor>黑桃</Cardcolor>

元素2:

<root id = '1' type = 'a'>

<Cardcolor>黑桃</Cardcolor>

<Cardname>决斗</Cardname>

</root>

2. 属性

属性是和元素相关联的,并且写入到元素的开始标签内的内容

如<root id = '1' type = 'a'>,可以理解为:<root>元素拥有2个属性,分别是id属性和type属性

3. 注释

包含在 <!-- 和 -->标签之间的内容,用以说明XML文档,示例中略。

如:<!-- 这是一条注释。 -->

4. 处理指令

处理指令用来告诉解析XML的处理器,一些相关的应用信息。

比如:<?xml version="1.0" encoding="UTF-8"?>

我除了在crossdomain.xml用到外,平时也没怎么用到,其他功能也不是太清楚,就不多做说明了。

二、XML的书写方式

1. 外部文档

在外部文档中,只要直接把示例的代码复制一份,然后粘贴到一个文本文件中,然后保存为一个后缀名为xml的文件即可。如card.xml

2. AS3.0中

在AS3.0中,可以直接保存至XML变量中,方法有以下几种:

(1) 直接把XML文本赋予XML对象,如:

var myXML:XML =

<card>

<root id = '1' type = 'a'>

<Cardcolor>黑桃</Cardcolor>

<Cardname>决斗</Cardname>

</root>

<root id = '2' type = 'b'>

<Cardcolor>梅花</Cardcolor>

<Cardname>雌雄双股剑</Cardname>

</root>

</card>

如果要把XML写入到AS,那这种方式是最常用的方式。

(2) 变量赋值的方式,如:

var str:String = "<card><root><Cardcolor>黑桃</Cardcolor><Cardname>决斗</Cardname></root></card>";

var myXML:XML = new XML(str);

这种方式由于不能很好的显示XML的结构,所以我不推荐使用。但是如果是程序生成XML,那这种方式还是有用武之地的。

另外着重要说明的是,在XML中是可以用变量的,但需要用{}将变量名括起来。如示例可以用下面的方式完成:

var card1:String = "Cardcolor";

var card2:String = "Cardname";

var con1:String = "黑桃";

var con2:String = "梅花";

var myXML:XML =

<card>

<root id = '1' type = 'a'>

<{card1}>{con1}</{card1}>

<{card2}>决斗</{card2}>

</root>

<root id = '2' type = 'b'>

<{card1}>{con2}</{card1}>

<{card2}>雌雄双股剑</{card2}>

</root>

</card>

采用变量的方式,对于用程序来实现XML是有极大方便的。但这里需要注意的是:不要把标签的<>号也用变量来完成。如var card1:String = "<Cardcolor>";这样是会报错的。

三、XML的载入

如果XML是用外部文件存放的形式,那需要载入该XML文档。

载入XML需要用到URLLoader类,方式如下:

var myXML:XML = new XML();

var xmlurl:String = "card.xml";

var myXMLURL:URLRequest = new URLRequest(xmlurl);

var myLoader:URLLoader = new URLLoader(myXMLURL);

myLoader.addEventListener(Event.COMPLETE,xmlLoaded);

function xmlLoaded(event:Event):void {

myXML = XML(myLoader.data);

trace(myXML.toXMLString());

}

这段代码我这里就不做说明了,如果实在看不懂,就直接引用吧。

四、XML的解析

在AS3.0中,用点符号解析元素,用@符号解析属性,如:

例1:我们要解析第二个<Cardname>标签,可以用下面的语句:

trace(myXML.root[1].Cardname);

例2:我们要解析第二个<root>标签属性,可以用下面的语句:

trace(myXML.root[1].@type);

在AS3.0中,解析的方式非常灵活,可以很方便的实现特定目标的解析,如要实现例1,也可以用以下两种方式:

第一种,用属性解析

trace(myXML.root.(@id == 2).Cardname);

第二种,用其他元素解析

trace(myXML.root.(Cardcolor == "梅花").Cardname);

例2也是相同,我这里就不写出来了,大家可以自己尝试一下。多多操作,肯定都会的。

当然,其他还有非常多的方式可以实现同样的目的,在下一篇里我还会讲到。这里就先不多做叙述了。

今天的这篇,是最基础的,也是最常用的,希望大家务必详细了解!

下一篇,还是讲解XML的知识,内容会更加深入些。

本文出自 “寂寞风之谷博客,请务必保留此出处http://www.jb51.cc/article/p-gwzcdvae-ed.html

原文链接:https://www.f2er.com/xml/300305.html

猜你在找的XML相关文章