diff --git a/tests/tests/swfs/avm2/flash_xml_namespace/Test.as b/tests/tests/swfs/avm2/flash_xml_namespace/Test.as
new file mode 100644
index 000000000..052fa2177
--- /dev/null
+++ b/tests/tests/swfs/avm2/flash_xml_namespace/Test.as
@@ -0,0 +1,58 @@
+package {
+ import flash.display.Sprite;
+ public class Test extends Sprite { }
+}
+
+import flash.xml.XMLDocument;
+
+var doc:XMLDocument = new XMLDocument('');
+
+trace("/// doc.childNodes[0].toString()");
+trace(doc.childNodes[0].toString());
+trace("/// doc.childNodes[0].prefix");
+trace(doc.childNodes[0].prefix);
+trace("/// doc.childNodes[0].localName");
+trace(doc.childNodes[0].localName);
+trace("/// doc.childNodes[0].namespaceURI");
+trace(doc.childNodes[0].namespaceURI);
+
+trace("/// doc.childNodes[1].toString()");
+trace(doc.childNodes[1].toString());
+trace("/// doc.childNodes[1].prefix");
+trace(doc.childNodes[1].prefix);
+trace("/// doc.childNodes[1].localName");
+trace(doc.childNodes[1].localName);
+trace("/// doc.childNodes[1].namespaceURI");
+trace(doc.childNodes[1].namespaceURI);
+
+trace("/// doc.childNodes[2].toString()");
+trace(doc.childNodes[2].toString());
+trace("/// doc.childNodes[2].prefix");
+trace(doc.childNodes[2].prefix);
+trace("/// doc.childNodes[2].localName");
+trace(doc.childNodes[2].localName);
+trace("/// doc.childNodes[2].namespaceURI");
+trace(doc.childNodes[2].namespaceURI);
+
+trace("/// doc.childNodes[2].childNodes[0].toString()");
+trace(doc.childNodes[2].childNodes[0].toString());
+trace("/// doc.childNodes[2].childNodes[0].prefix");
+trace(doc.childNodes[2].childNodes[0].prefix);
+trace("/// doc.childNodes[2].childNodes[0].localName");
+trace(doc.childNodes[2].childNodes[0].localName);
+trace("/// doc.childNodes[2].childNodes[0].namespaceURI");
+trace(doc.childNodes[2].childNodes[0].namespaceURI);
+
+trace("/// doc.childNodes[2].childNodes[1].toString()");
+trace(doc.childNodes[2].childNodes[1].toString());
+trace("/// doc.childNodes[2].childNodes[1].prefix");
+trace(doc.childNodes[2].childNodes[1].prefix);
+trace("/// doc.childNodes[2].childNodes[1].localName");
+trace(doc.childNodes[2].childNodes[1].localName);
+trace("/// doc.childNodes[2].childNodes[1].namespaceURI");
+trace(doc.childNodes[2].childNodes[1].namespaceURI);
+
+for (var name in doc.childNodes[1].attributes) {
+ trace("/// attribute name");
+ trace(name);
+}
diff --git a/tests/tests/swfs/avm2/flash_xml_namespace/output.txt b/tests/tests/swfs/avm2/flash_xml_namespace/output.txt
new file mode 100644
index 000000000..a27cced10
--- /dev/null
+++ b/tests/tests/swfs/avm2/flash_xml_namespace/output.txt
@@ -0,0 +1,42 @@
+/// doc.childNodes[0].toString()
+
+/// doc.childNodes[0].prefix
+xml
+/// doc.childNodes[0].localName
+a
+/// doc.childNodes[0].namespaceURI
+null
+/// doc.childNodes[1].toString()
+
+/// doc.childNodes[1].prefix
+
+/// doc.childNodes[1].localName
+foo
+/// doc.childNodes[1].namespaceURI
+null
+/// doc.childNodes[2].toString()
+
+/// doc.childNodes[2].prefix
+
+/// doc.childNodes[2].localName
+a
+/// doc.childNodes[2].namespaceURI
+null
+/// doc.childNodes[2].childNodes[0].toString()
+
+/// doc.childNodes[2].childNodes[0].prefix
+
+/// doc.childNodes[2].childNodes[0].localName
+b
+/// doc.childNodes[2].childNodes[0].namespaceURI
+null
+/// doc.childNodes[2].childNodes[1].toString()
+
+/// doc.childNodes[2].childNodes[1].prefix
+example
+/// doc.childNodes[2].childNodes[1].localName
+c
+/// doc.childNodes[2].childNodes[1].namespaceURI
+http://example.org
+/// attribute name
+xml:bar
diff --git a/tests/tests/swfs/avm2/flash_xml_namespace/test.swf b/tests/tests/swfs/avm2/flash_xml_namespace/test.swf
new file mode 100644
index 000000000..2458f81a8
Binary files /dev/null and b/tests/tests/swfs/avm2/flash_xml_namespace/test.swf differ
diff --git a/tests/tests/swfs/avm2/flash_xml_namespace/test.toml b/tests/tests/swfs/avm2/flash_xml_namespace/test.toml
new file mode 100644
index 000000000..77f4c0e41
--- /dev/null
+++ b/tests/tests/swfs/avm2/flash_xml_namespace/test.toml
@@ -0,0 +1,2 @@
+num_frames = 1
+known_failure = true