Here's a handy little function for converting all tag names and attribute names in an XML object to lower case. Useful for doing case-insensitive matching on tag names and attribute names.
public function xmlTagsToLowerCase (xml:XML):XML {
// Convert the root tag to lowercase
xml.setName(xml.name().toString().toLowerCase());
for each (var attribute:XML in xml.@*) {
attribute.setName(attribute.name().toString().toLowerCase());
}
// Convert all descendant tags to lowercase
for each (var child:XML in xml..*) {
// If the node is an element...
if (child.nodeKind() == "element") {
// ...change its name to uppercase.
child.setName(child.name().toString().toLowerCase());
// If the node has any attributes, change their names to uppercase.
for each (attribute in child.@*) {
attribute.setName(attribute.name().toString().toLowerCase());
}
}
}
return xml;
}
// Usage:
var x:XML = xmlTagsToLowerCase(new XML ("<A C='D'><B>test</B></A>"));
trace(x); // Output: <a c="D"><b>test</b></a>
Posted by moock at July 2, 2008 09:49 PM