2010-11-14 92 views
0

在過去的幾個小時裏,我一直在撞牆,並且需要一些關於如何解決(我認爲很奇怪)問題的建議。使用AS3的SOAP XML

我連接到一個.NET web服務,並傳遞給它幾個參數並找回一些XML包裝在SOAP中。

我發現通過所有的SOAP頭來獲得我想要交互的數據非常繁瑣。看起來你不能像普通的XML那樣迭代它。 (0)[0] [0] .toXMLString());返回頁首返回頁首返回頁首返回頁首返回頁首返回頁首返回頁首返回頁首

所以無論如何,當我從WebService描繪出我的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> 

現在如果我通常會使用跟蹤(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> ; 

然後跟蹤(xml.CurrencyPrice [0])中的數據;

Boom得到一些我可以使用的XML。

所以我的問題是如何刪除標題中的屬性我嘗試使用刪除方法定位。@ xlmns。不做任何事情,或以任何其他方式繞過它。

我將不勝感激任何意見,因爲它使用了我的垃圾我沒有得到任何地方。

乾杯

城野

回答

0

使用的命名空間,您需要使用AS3中的命名空間聲明。

public namespace soap = "http://schemas.xmlsoap.org/soap/envelope/"; 

然後,你將能夠與訪問子屬性:

trace(xml.soap::CurrencyPrice.soap::CurrencyID); 

然而,當你使用多個名稱空間它會看起來更凌亂。我從其他似乎有同樣問題的人那裏找到了這個參考,但只有兩個命名空間。我不知道如何用四個看!

http://headwindslab.net/2009/01/29/parsing-multiple-namespaces-in-as3/

祝你好運! :)

1

難道你不能這樣說嗎?

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]);