【问题标题】:XML, namespaces and E4XXML、命名空间和 E4X
【发布时间】:2011-12-26 05:27:18
【问题描述】:

谁能解释一下 XML 中的命名空间 (xmlns="...") 的确切用途以及在使用 E4X 导航 XML 时必须如何使用它们(..最好在 ActionScript 3 中)?

我无法完全理解它们的目的和用途。

【问题讨论】:

    标签: xml actionscript-3 namespaces e4x


    【解决方案1】:

    理论上,使用 XML 命名空间是为了避免与标记名称发生冲突。所以我可以创建一个名称空间,其中包含一个名为“mytag”的标签,而其他人创建一个具有相同标签“mytag”的不同名称空间,不会有任何冲突。每个“mytag”标签都会有明显的区别。

    在实践中,我发现 XML 命名空间几乎毫无用处(您多久让两个开发人员为同一个 XML 文件创建标签?)而且只会让解析变得非常困难。

    在 EX4 中,您需要获取命名空间,然后在每个标记前加上该命名空间。因此,例如,如果您想访问标签<somenamespace::somename>,您将编写:

    var somenamespace:Namespace = xml.namespace("somenamespace");
    var sometag:XML = somenamespace::somename[0];
    

    如果您在 Google 上搜索,您会发现一些 AS3 类可以从 XML 中删除这些无用的命名空间,以便于解析。

    【讨论】:

    • 好吧 - 现在这说明了为什么我无法访问节点中的数据!谢谢!
    • 请记住,每个 XML 文档都有一个默认命名空间,即没有前缀的命名空间。如果您正在使用可以使用 XSD 文件验证的明确定义的 XML 结构,并且您不能修改 XSD 文件(例如,对于 MathML),“扩展”XML 的唯一方法是在您拥有的单独命名空间。 (每个 XSD 都可以定义允许此类扩展的位置,例如 AIR SDK 中使用的应用 XML 文件不允许这样做。)
    【解决方案2】:

    许多人认为詹姆斯克拉克的解释是最清楚的解释之一:

    http://www.jclark.com/xml/xmlns.htm

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 2012-03-23
      • 2020-04-27
      • 2011-08-07
      • 1970-01-01
      相关资源
      最近更新 更多