您的位置:首页 > 编程语言 > PHP开发

[原]as3 flash web 应用 (7)flash与php的交互(B)

2011-09-28 15:56 363 查看
2010年06月21日 星期一 02:23

由于某度众所周知的铜臭举动,让我搬离写了5年的渣度空间,准备把技术性的文章定在CSDN了。这些都是文章备份。勿怪。。

鉴于最近有些抓取机器和抄袭者,把标题的【原】字都复制,我不得不声明:本文为 yukon12345原创,转载请注明出处http://blog.csdn.net/yukon12345

5.使用xml格式互相通讯flash自身也可以生成xml然后发送。注意的是并不是生成一个xml对象来发送,而是生成xml格式的文本发送给php

php通过xml处理扩展来解析xml。常见的php xml扩展解析主要有3大类:DOM,SAX,SimpleXML。

对于三中解析方法的特点,这里有详细的说明 http://stvsui.blog.163.com/blog/static/16015468520103452224868/
在这里用php5的SimpleXML扩展来解析flash传入的xml.

php5的SimpleXML非常容易上手,基本和as3的解析类似。

以xml文件

 
<?xml version='1.0' encoding='utf-8'?>
<root>
<image path='[图片地址]'name='[图片名]'>这里是文本内容</image>
</root>


为例

$xmlsimplexml_load_file("路径")  可以读取xml文件

$xml=simplexml_load_string($变量名)   可以读取存在变量中的文本类型xml。

$xml->image 可以读取image节点数组。和as3一样,同样也忽略根节点<root>

$xml->image[0] 可以获取数组第一个节点。以此类推.可以用foreach或者for循环等来遍历数组。

$xml->imgae[0]['path'] 用来读取image的path属性值

$xml->imgae[0]['path']='新路径' 可用来修改值

xpath查询:

$xml->xpath('//image') 用来查寻任何深度的image节点包含的文本内容。比如<image>这里是文本内容</image>

$xml->xpath('/root/image') 用来查寻此深度下的所有image节点包含的内容

php就不说这么多了

下面就是as3和php5使用xml格式消息互相通讯:

 as3
var loader=new URLLoader()
//设置装载器的格式为TEXT
loader.dataFormat=URLLoaderDataFormat.TEXT
var urlR=new URLRequest()
urlR.method=URLRequestMethod.POST
urlR.url="http://127.0.0.1/upload/8php/repeat5.php"
var variable=new URLVariables()
var xml="<?xml version='1.0' encoding='utf-8'?>"
//注意这里用单引号来标示xml属性值而非双引号。默认simplexml解析的xml需要用单引号。刚开始我测试了半天。
xml+=" <root> <image name='[图片名]' path='[图片地址]' /> </root>"

variable.flashXML=xml //以文本方式发送
urlR.data=variable
var txt=new TextField()
txt.width=300
txt.x=20
txt.y=30
addChild(txt)

loader.addEventListener(Event.COMPLETE,function(){
var phpxml=new XML(loader.data)
//选择呈现xml数据
trace(loader.data)
txt.text=phpxml.image[0].@path+phpxml.image[0].@name
})
loader.load(urlR)

php代码:

header("Pragma:no-cache");
if(isset($_POST['flashXML'])){ //使用simpleXML扩展读取xml
$xmlstr=$_POST['flashXML'];
$flashXML=simplexml_load_string($xmlstr); //将字符串读入成xml
$path="这是php发出的".$flashXML->image['path']; //获取属性值
$name="这是php发出的".$flashXML->image['name'];
$phpXML="<?xml version='1.0' encoding='utf-8'?>";
$phpXML.="<root><image path='".$path."'name='".$name."'/></root>";
echo $phpXML; //输出新的xml给flash
}
else
{
echo "无请求";
}源文件下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  flash php web xml path image