Actionscript 3 嵌套xml元素中的名称空间

Actionscript 3 嵌套xml元素中的名称空间,actionscript-3,flex4,Actionscript 3,Flex4,对于我现在遇到的问题,我已经看到了一些答案,但我的答案是嵌套的 我有一个如下所示的xml: > <em> <type xmlns="http://www.sitcom-project.org/sitcom" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <model> <implemented_with>comoco</implemented_with>

对于我现在遇到的问题,我已经看到了一些答案,但我的答案是嵌套的

我有一个如下所示的xml:

> 
<em>
<type xmlns="http://www.sitcom-project.org/sitcom" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <model>
    <implemented_with>comoco</implemented_with>
    <implemented_in>perl</implemented_in>
    <cash_flow>casual</cash_flow>
    <interaction>conventional</interaction>
  </model>
</type>
</em>
>
科摩科
perl
随便的
传统的
现在,如何使用节点访问已实现的_的元素

ofc i可以通过以下方式访问xmlList: 名称空间ns=www.sitcom-project.org/sitcom; ns::模型; 但是现在,如何访问模型xmlList中已实现的带有节点的_? 我尝试了type.ns::model.u,但没有成功。有人知道吗?
谢谢,有几种方法可以做到这一点,但最好的方法是在每次点访问之前使用名称空间前缀。在您的情况下,您要做的第一件事是隔离名称空间。您可以通过将名称空间硬编码到新的名称空间对象中来实现这一点。。。ie

var ns:Namespace = new Namespace( "http://www.sitcom-project.org/sitcom" );
或者更好的方法是从适当的节点提取它。在下面的代码中,我将获得在类型节点上声明的所有名称空间(作为数组),并且只针对列表中的第一个名称空间。因为我事先不知道名称空间,所以必须使用children()方法检索它

完成此操作后,可以使用名称空间语法深入研究模型

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;

希望这有帮助。

ActionScript有一个关于
默认xml名称空间的陷阱。完成后,必须将其重置为空命名空间,否则可能会发生运行时错误。请编辑我的答案以反映您的评论
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;