2013-06-04 78 views
0

我有一个XML文件(以下简化的),我无法读取节点的内容:读取XML节点使用ActionScript 3

<List xmlns="Default" xmlns:st="ST" xmlns:lc="LC"> 
    <Main> 
    <st:ID>10</st:ID> 
    <Info> 
     <st:One>One</st:One> 
     <st:Two>Two</st:Two> 
     <st:Three>Three</st:Three> 
    </Info> 
    </Main> 
</List> 

如果我尝试:trace(xmlOne.Main.Info.One.toString());它不返回任何东西。我知道它与命名空间有关,但是我不创建XML并且不能删除它们。我试过了:

namespace theDefault = "Default"; 
use namespace theDefault; 

但是实际上没有运气读取节点内容。因此,在不改变XML的情况下,读取节点内容的最佳方式是什么?

+0

一不在默认名称空间中。 –

回答

0

您必须使用名称空间对象访问名称空间下的节点。

var message:XML = <List xmlns="Default" xmlns:st="ST" xmlns:lc="LC"> 
    <Main> 
    <st:ID>10</st:ID> 
    <Info> 
     <st:One>One</st:One> 
     <st:Two>Two</st:Two> 
     <st:Three>Three</st:Three> 
    </Info> 
    </Main> 
</List>; 

// First create the namespace objects for the namespaces used in the XML. 
var defaultNS:Namespace = new Namespace('Default'); 
var stNS:Namespace = new Namespace('ST'); 

// Find and trace the value of the "One" node. 
trace(message.defaultNS::Main.defaultNS::Info.stNS::One); 

您需要的命名空间的前缀E4X节点名称:我在这里使用XML做一个简单的例子。要访问ID节点,你会怎么做:

trace(message.defaultNS::Main.stNS::ID); 

而且让你可以完成整个信息节点:

var info:XMLList = message.defaultNS::Main.defaultNS::Info; 
trace(info); 

对于AS3的XML命名空间的更多信息请查看section on Namespaces in Senocular's XML tutorial

+0

工作,谢谢! – user2440987