Flex中处理带命名空间的XML

对包含自定义命名空间的XML 进行分析是比较困难的, 它要求该命名空间一定要在任何XML 返回前被申明, 同时要在该命名空间内进行分析。比如对于以下的一个xml:

test.xml

  1. <?xml version="1.0"?>  
  2. <soap:Envelope  
  3. xmlns:soap="http://www.w3.org/2001/12/soap-envelope"  
  4. soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">  
  5. <soap:Body xmlns:m="http://www.example.org/stock">  
  6. <m:PriceResult>  
  7. <m:Price>34.5</m:Price>  
  8. </m:PriceResult>  
  9. </soap:Body>  
  10. </soap:Envelope>  

在Applicaiton中如下:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*">  
  3.     <mx:Script>  
  4.         <!--[CDATA[  
  5.             import mx.rpc.events.ResultEvent;  
  6.               
  7.             //load the xml  
  8.             private function loadXML():void  
  9.             {  
  10.                 https.send();  
  11.             }  
  12.               
  13.             private function doResult(evt:ResultEvent):void  
  14.             {  
  15.                 var xml:XML = evt.result as XML;  
  16.                   
  17.                 //这样可以取得正确结果  
  18.                 namespace w3c = "http://www.w3.org/2001/12/soap-envelope";  
  19.                 use namespace w3c;  
  20.                 namespace m = "http://www.example.org/stock";  
  21.                 use namespace m;  
  22.                 lbl.text = xml.w3c::Body.m::PriceResult.m::Price;  
  23.                 //这样取不到正确结果  
  24. //              lbl.text = xml.Body.PriceResult.Price;   
  25.             }  
  26.         ]]-->  
  27.     </mx:Script>  
  28.     <mx:Button x="297" y="289" label="Button" click="loadXML()"/>  
  29.     <mx:HTTPService id="https" url="test.xml" result="doResult(event)" resultFormat="e4x"/>  
  30.     <mx:Label x="212" y="198" text="显示结果:"/>  
  31.     <mx:Label x="291" y="198" width="132" id="lbl"/>  
  32. </mx:Application>   

注意代码中:

  1. namespace w3c = "http://www.w3.org/2001/12/soap-envelope";  
  2.  namespace w3c;  
  3. namespace m = "http://www.example.org/stock";  
  4.  namespace m;  

如果没有这些代码的话是不能得到正确结果的,大家可以测试以下,新建一个工程,然后把以上代码copy过去就可以了。在Flex3CookBook中有提到这个问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值