【问题标题】:Reading XML Node with ActionScript 3使用 ActionScript 3 读取 XML 节点
【发布时间】:2013-06-04 20:54:37
【问题描述】:

我有一个 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>

如果我尝试:trace(xmlOne.Main.Info.One.toString()); 它不会返回任何内容。我知道它与命名空间有关,但是我没有创建 XML 也无法删除它们。我试过了:

namespace theDefault = "Default";
use namespace theDefault;

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

【问题讨论】:

  • 一个不在默认命名空间中。

标签: xml actionscript-3 parsing namespaces xml-namespaces


【解决方案1】:

您必须使用命名空间对象来访问命名空间下的节点。我在这里使用你的 XML 做了一个简单的例子:

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 节点名称前加上命名空间。要访问 ID 节点,您可以:

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

要获取整个 Info 节点,您可能会这样做:

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

有关 AS3 中 XML 命名空间的更多信息,请查看section on Namespaces in Senocular's XML tutorial

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多