Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package
- {
- import flash.display.Sprite;
- public class Test extends Sprite
- {
- public function Test()
- {
- super();
- namespace bar = "bar";
- var xml:XML =
- <foo xmlns:bar="bar" xmlns:moo="moo">
- <bar:foo bar:foo="whatever" spam="egg"/>
- <moo:foo bar:foo="something else"/>
- </foo>;
- trace(this.replaceNamespace(xml,
- xml.bar::foo.namespace(),
- new Namespace("baz", "baz")));
- }
- private function replaceNamespace(xml:XML, nsA:Namespace, nsB:Namespace):XML
- {
- var result:XML = <x/>;
- var spaces:Array = xml.inScopeNamespaces();
- var needsMoreReplace:Boolean;
- var childOrAttribute:XML;
- if (xml.namespace() == nsA)
- {
- result.addNamespace(nsB);
- result.setName(new QName(nsB, xml.localName()));
- }
- else
- {
- result.addNamespace(xml.namespace());
- result.setName(xml.name());
- }
- for each (var space:Namespace in spaces)
- {
- if (space == nsA)
- {
- needsMoreReplace = true;
- break;
- }
- }
- if (needsMoreReplace)
- {
- for each (childOrAttribute in xml.*)
- result.* += this.replaceNamespace(childOrAttribute, nsA, nsB);
- for each (childOrAttribute in xml.@*)
- {
- trace(childOrAttribute.toXMLString());
- if (childOrAttribute.namespace() == nsA)
- {
- result.addNamespace(nsB);
- result["@" + nsB.prefix + ":" +
- childOrAttribute.localName()] = childOrAttribute.toXMLString();
- }
- else result[childOrAttribute.name()] = childOrAttribute.toXMLString();
- }
- }
- return result.normalize();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement