XML、命名空间和E4X

3

有人能解释一下XML中的命名空间(xmlns =“ ...”)到底是用来做什么的,以及在使用E4X(..最好是在ActionScript 3中)导航XML时如何使用它们吗?

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

2个回答

1

理论上,XML命名空间用于避免标签名称冲突。因此,我可以创建一个包含名为“mytag”的标签的命名空间,而其他人创建一个具有相同标签“mytag”的不同命名空间,就不会有任何冲突。每个“mytag”标签将被清楚地区分。

实际上,我发现XML命名空间几乎没有用处(你有多少次两个开发人员为同一个XML文件创建标签?),只会使解析变得非常困难。

在EX4中,您需要获取命名空间,然后使用该命名空间为每个标签添加前缀。例如,如果您想访问标签<somenamespace::somename>,则应编写:

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

如果你在谷歌上搜索,你会找到一些AS3类,可以从XML中删除这些无用的命名空间,使解析更容易。


好的 - 现在我明白为什么我无法访问我的节点中的数据了!谢谢! - Mat
请记住,每个XML文档都有一个默认命名空间,即没有前缀的命名空间。如果您正在使用可以使用XSD文件进行验证的良好定义的XML结构,并且无法修改XSD文件(例如MathML),则“扩展”XML的唯一方法是在您拥有的单独命名空间中引入自己的元素。(每个XSD都可以定义允许此类扩展的位置,例如AIR SDK中使用的应用程序XML文件不允许此操作。) - karfau

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接