Search code examples
xmlactionscript-3namespacese4x

XML, namespaces and E4X


Can someone explain me what exactly namespaces (xmlns="...") in XML are for and how they have to be used in navigating an XML using E4X (..preferrably in ActionScript 3)?

I fail to fully understand their purpose and usage.


Solution

  • In theory, XML namespaces are used to avoid conflict with tag names. So I can create a namespace that contains a tag named "mytag" and someone else creates a different namespace with the same tag "mytag" and there won't be any conflict. Each "mytag" tag will be clearly differentiated.

    In practice, I found that XML namespaces are pretty much useless (how often do you have two developers creating tag for the same XML file?) and just make the parsing annoyingly difficult.

    In EX4, you'll need to get the namespace, then prefix each tag with that namespace. So, for example, if you want to access the tag <somenamespace::somename> you will write:

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

    If you search on Google, you'll find some AS3 classes that remove these useless namespaces from XML to make parsing easier.