带AS3的SOAP XML
在过去的几个小时里,我一直把头撞在墙上,我需要一些关于如何解决一个(我认为很奇怪的)问题的建议 我正在连接到一个.NETWebService,并向它传递几个参数,然后返回一些用SOAP封装的XML 我发现要通过所有SOAP头来获取我想要交互的数据非常麻烦。看起来,您无法像普通XML那样对其进行迭代 var soapEnvelope:XML=new-XML(servicesponse.children()[0][0][0].toXMLString()) 因此,不管怎样,当我从Web服务中查找XML时,我得到以下结果:带AS3的SOAP XML,xml,actionscript-3,parsing,soap,Xml,Actionscript 3,Parsing,Soap,在过去的几个小时里,我一直把头撞在墙上,我需要一些关于如何解决一个(我认为很奇怪的)问题的建议 我正在连接到一个.NETWebService,并向它传递几个参数,然后返回一些用SOAP封装的XML 我发现要通过所有SOAP头来获取我想要交互的数据非常麻烦。看起来,您无法像普通XML那样对其进行迭代 var soapEnvelope:XML=new-XML(servicesponse.children()[0][0][0].toXMLString()) 因此,不管怎样,当我从Web服务中查找XML
<data xmlns="http://services.xxx.com" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CurrencyPrice>
<CurrencyID>8</CurrencyID>
<CurrencyFlagImagePath/>
<MidRate>x.xxxx</MidRate>
<CurrencyCode>AUD</CurrencyCode>
<CurrencyName>Australian Dollar (AUD)</CurrencyName>
<BaseCurrency>GBP</BaseCurrency>
<CurrencyChartURL/>
</CurrencyPrice>
</data>
8.
x、 xxxx
澳元
澳元
英镑
现在,如果我通常使用trace(xml.CurrencyPrice[0]);查看第一个CurrencyPrice节点。但我得到一个未定义的。如果我复制原始跟踪并手动创建XML并删除所有数据xlmns属性
var xml:XML = <data>
<CurrencyPrice>
<CurrencyID>8</CurrencyID>
<CurrencyFlagImagePath/>
<MidRate>x.xxxx</MidRate>
<CurrencyCode>AUD</CurrencyCode>
<CurrencyName>Australian Dollar (AUD)</CurrencyName>
<BaseCurrency>GBP</BaseCurrency>
<CurrencyChartURL/>
</CurrencyPrice>
</data> ;
var-xml:xml=
8.
x、 xxxx
澳元
澳元
英镑
;
然后跟踪(xml.CurrencyPrice[0])
找到一些我可以使用的XML
因此,我的问题是如何从标题中删除属性,我已经尝试使用delete方法针对@xlmns。什么都不做,或者以其他方式逃避
如果你能给我一些建议,我将不胜感激,因为我已经用谷歌搜索过了,我不会有任何进展
干杯
Jono使用名称空间时,需要使用AS3中的名称空间声明
public namespace soap = "http://schemas.xmlsoap.org/soap/envelope/";
然后,您可以通过以下方式访问子属性:
trace(xml.soap::CurrencyPrice.soap::CurrencyID);
然而,当您使用多个名称空间时,它看起来会更加混乱。我从其他人那里找到了这个引用,他们似乎也有同样的问题,但只有两个名称空间。我不知道有四个会怎么样
祝你好运!:) 使用名称空间时,需要使用AS3中的名称空间声明
public namespace soap = "http://schemas.xmlsoap.org/soap/envelope/";
然后,您可以通过以下方式访问子属性:
trace(xml.soap::CurrencyPrice.soap::CurrencyID);
然而,当您使用多个名称空间时,它看起来会更加混乱。我从其他人那里找到了这个引用,他们似乎也有同样的问题,但只有两个名称空间。我不知道有四个会怎么样
祝你好运!:) 你试过阿尔都塞特的图书馆吗?你试过阿尔都塞特的图书馆吗?你不能这样说吗
var raw:String = xml.toXMLString();
//filter the String of namespaces
//and then recreate the xml
var clean:XML = new XML(raw);
然后显然要进行常规的XML实践
trace(clean.CurrencyPrice[0]);
你不能这样说吗
var raw:String = xml.toXMLString();
//filter the String of namespaces
//and then recreate the xml
var clean:XML = new XML(raw);
然后显然要进行常规的XML实践
trace(clean.CurrencyPrice[0]);
我正在使用Alducente的库,但未找到任何IOError事件。你知道吗?请记住我已经8年没用过这个图书馆了,所以我的建议可能不是100%准确。如果查看源代码中的
WSDL
类的getWSDL
方法,您会注意到添加了一个事件侦听器:urloader.addEventListener(event.COMPLETE,wsdlLoaded)代码>。我建议您修改getWSDL
的签名,以包括针对您所需的任何缺失事件(例如IOError/SecurityError/等)的回调,触发回调,以便它们传播到WebService
,并从那里发送事件。这将允许您将IOError/SecurityError处理程序添加到WebService
实例。我正在使用Alducente的库,但未找到任何IOError事件。你知道吗?请记住我已经8年没用过这个图书馆了,所以我的建议可能不是100%准确。如果查看源代码中的WSDL
类的getWSDL
方法,您会注意到添加了一个事件侦听器:urloader.addEventListener(event.COMPLETE,wsdlLoaded)代码>。我建议您修改getWSDL
的签名,以包括针对您所需的任何缺失事件(例如IOError/SecurityError/等)的回调,触发回调,以便它们传播到WebService
,并从那里发送事件。这将允许您向WebService
实例添加IOError/SecurityError处理程序。