Есть несколько способов сделать это, но лучший способ - использовать префикс пространства имен перед каждым точечным доступом. В вашем случае первое, что вы хотите сделать, это изолировать пространство имен. Вы можете сделать это путем жесткого кодирования пространства имен в новый объект пространства имен ... т.е.;
var ns:Namespace = new Namespace( "http://www.sitcom-project.org/sitcom" );
Или лучший способ - просто извлечь его из соответствующего узла. В следующем коде я получаю все пространства имен (в виде массива), объявленные на узле типа, и просто нацеливаясь на первое в списке. Поскольку я заранее не знаю пространство имен, мне нужно получить его, используя метод children ().
var emNode:XML = _yourXML.em[0];
var typeRoot:XML = emNode.children()[0];
var ns:Namespace = typeRoot.namespaceDeclarations()[0];
Как только вы это сделаете, вы можете использовать синтаксис пространства имен, чтобы углубиться в вашу модель.
var impWith:String = typeRoot.ns::model.ns::implemented_with;
Это может быть немного многословно, поэтому вы можете установить пространство имен по умолчанию, используя следующий синтаксис. Лично мне это не нравится, но оно работает.
default xml namespace = ns;
var impWith:String = typeRoot.model.implemented_with;
default xml namespace = null;
Может быть простой однострочник.
var ns:Namespace = new Namespace("http://www.sitcom-project.org/sitcom");
var imp:String = _yourXML.em[0].ns::type.ns::model.ns::implemented_with;
Использование синтаксиса по умолчанию
default xml namespace = new Namespace("http://www.sitcom-project.org/sitcom");
var imp:String = _yourXML.em[0].type.model.implemented_with;
default xml namespace = null;
Надеюсь, это поможет.