Actionscript 3 E4X, работающий со значениями пространства имен в XML

Я создаю приложение с помощью Action script 3 Я получаю некоторый XML из Интернета, однако имена узлов - mms: Image mms: Results и т. Д. Мой компилятор сценария действий выдает ошибку, потому что он не ожидает увидеть точку с запятой в узле имя. Как мне получить доступ к узлам?

Благодарность


person Code Pharaoh    schedule 09.06.2010    source источник


Ответы (1)


Это пространства имен XML, и их использование может быть затруднительным. Ознакомьтесь с документацией Adobe по Использование пространств имен XML.

В основном вам нужно получить пространство имен:

var mmsNS:Namespace = message.namespace("mms");

// alternatively for nested namespaces:

var mmsNS:Namespace = new Namespace("mms", " ... url of namespace ... ");

А затем используйте его, если хотите получить узлы, к которым он применяется:

var data:XML = message.@mmsNS::Results;

Ярлык, если весь ваш xml находится в определенном пространстве имен, должен установить пространство имен по умолчанию:

default xml namespace = mmsNs;

edit: Пространство имен XML, к которому вы пытаетесь получить доступ, должно быть объявлено во фрагменте XML:

<root xmlns:mms="http://example.com/mms">
    <mms:someNode someAttr="someVal" />
</root>

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

person James Fassett    schedule 09.06.2010
comment
Спасибо за это, я попробовал и продолжаю получать сообщение об ошибке недопустимого значения для пространства имен. Какие-нибудь идеи? - person Code Pharaoh; 10.06.2010
comment
Также как мне узнать, что такое URL-адрес пространства имен? - person Code Pharaoh; 10.06.2010
comment
Пространство имен xml должно быть объявлено в XML. Добавлю пример. - person James Fassett; 10.06.2010