问题
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.
回答1:
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.
回答2:
Many people point to James Clark's explanation as one of the clearest:
http://www.jclark.com/xml/xmlns.htm
来源:https://stackoverflow.com/questions/8080947/xml-namespaces-and-e4x