flash学习笔记(五)--关于XML知识【重点】

第十三章 Flash和XML集成开发

1.        W3CDOM处理XML文档:

1>    新建XML文档xml.xml

2>    创建XMLDocument对象、解析文档:

import flash.xml.XMLDocument;

import flash.net.URLRequest;

import flash.display.Loader;

 

function xmlLoader(evt:Event):void{

var myDoc:XMLDocument = new XMLDocument();

myDoc.ignoreWhite= true;

myDoc.parseXML(myLoader.data);

varmyVar:String = myDoc.firstChild.firstChild.firstChild.firstChild.nodeValue;

trace(myVar);

}

 

var myXMLURL:URLRequest = newURLRequest("xml.xml");

var myLoader:URLLoader = newURLLoader(myXMLURL);

myLoader.addEventListener(Event.COMPLETE,xmlLoader);

2.        使用XMLNode对象处理XML文档:

注意:XMLNode是XMLDocument的基类,所以XMLNode的属性方法,后者同样可用!

1>    Attributes集合:返回一个包含指定节点所有属性的对象。

var str:String = "广州";

var doc1:XMLDocument = newXMLDocument(str);

var node:String =doc1.firstChild.attributes.state;

trace(node);

或者:

var attrs:Object =doc.firstChild.attributes;

for(var prop in attrs){

trace(prop+"="+attrs[prop]);

}

2>    childNodes集合:返回一个包含指定节点所有子节点的数组。

var node1:Array =doc1.firstChild.childNodes;

trace("3"+node1[0]);

3.        使用E4X处理XML:

1>用于实现E4X的AS类

var myXML:XML =

广州

济南

;

 

trace(myXML.area[0].toXMLString());

2>创建XML对象和XMLList对象:

  vartagname:String = "area";

var attributename:String ="atate";

var attributevalue:String = "广东省";

var content:String = "广州";

 

var my:XML = <{tagname}{attributename}={attributevalue}>{content};

trace(my.toXMLString());

3>    外部加载和Document一样

4>    “.”子元素访问;  ”..”后代访问;  ”@”属性访问;  ”*”通配符

4.        修改XML结构

         myDoc.name[0].first= "1leverling";

对于命名空间:其实XML里的命名空间的作用与其它语言(如C#)中命名空间的作用差不多:为命名提供一个容器,只要在该容器中没有相同的命名就可以避免命名冲突。

5.        修改XML命名空间:

1>读取命名空间:

Xmlns:zhuozi=”heep://www.baidu.com”;

Var tableNs:Namespace = myXML.namespace(“zhuozi”);

2>增加/修改命名空间:

      myXML.addNamespace(newNS);

      myXML.table.setNamespace(newNS);

3>    QName:限定

6.        XMLSocket对象信息处理方法:

1>    当调用connect打开对服务器的TCP/IP连接并处于打开状态,直到一下情况之一发生!

XMLSocket对象close方法被调用

不再有XMLSocket对象参数存在

Flash Player退出

2>    XMLSocket与安全:

只能够连接到端口号大于或者等于1024的TCP端口。同样子域进行访问,或者跨域文件!

3>   网页资料:  

as3 socket 读写数据方法常用的有四个:readUTF, writeUTF, readUTFBytes, writeUTFBytesjavasocket 输入输出流常用BufferedReader DataOutputStream 包装, 以提高读写效率
:
    BufferedReaderreader = new BufferedReader(new InputStreamReader(socket.getInputStream(),    "UTF-8"));

    DataOutputStreamwriter = new DataOutputStream(socket.getOutputStream());

as3 方写数据时用writeUTFBytes 方法, 此时java 方读数据用reader.readLine()阻塞式方法.
as3
方写数据时用writeUTF方法, 此时java 方应改用DataInputStream 类包装输入流, 因为BufferedReader 不提供读取UTF数据的方法.
java
方写数据时用writeUTF方法, 此时as3 方读数据用readUTF方法, 但此种模式有个弊端, 就是如果java方连续调用了n(n >= 2)writeUTF方法,as3方因来不及读取, 则最后只是第一次写入的数据被读取.
java
方写数据时用writeBytes, 此时as3 方读数据用readUTFBytes方法读取数据, 可以这样读取: msg = socket.readUTFBytes(socket.bytesAvailable).

你可能感兴趣的:(adobe,flash,学习笔记)