带AS3的SOAP 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

在过去的几个小时里,我一直把头撞在墙上,我需要一些关于如何解决一个(我认为很奇怪的)问题的建议

我正在连接到一个.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处理程序。