SOAP XML с AS3 - PullRequest
       26

SOAP XML с AS3

0 голосов
/ 14 ноября 2010

Последние пару часов я бился головой о стену, и мне нужен небольшой совет о том, как обойти (что я считаю странным) проблему.

Я подключаюсь к веб-сервису .NET, передаю ему пару параметров и возвращаю XML, завернутый в SOAP.

Мне показалось довольно суетным пробираться через все заголовки SOAP, чтобы получить данные, с которыми я хотел взаимодействовать. Как оказалось, вы не можете перебирать его, как обычный XML.

var soapEnvelope: XML = новый XML (serviceResponse.children () [0] [0] [0] .toXMLString ());

Так или иначе, когда я отслеживаю свой 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>

Теперь, если бы я обычно использовал 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> ;  

затем трассировка (xml.CurrencyPrice [0]);

Бум получил XML, с которым я могу работать.

Поэтому мой вопрос заключается в том, как удалить атрибуты из заголовка, который я пробовал, используя метод удаления с таргетингом. @ Xlmns. Ничего не делает или обходит это каким-либо другим способом.

Буду признателен за любые советы по этому поводу, вырвав из этого дерьмо, я никуда не пойду.

Приветствия

Джоно

Ответы [ 3 ]

2 голосов
/ 15 марта 2011

Разве вы не можете сказать что-то подобное?

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]);
1 голос
/ 15 ноября 2010

Вы пробовали библиотеку Alducente as3 ?

0 голосов
/ 15 ноября 2010

При использовании пространств имен вам необходимо использовать объявление пространства имен в 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/

Удачи! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...