使用以下代码,一切都按预期工作,我保留默认命名空间和跟踪打印输出中的xsi命名空间。
var tempData = <objects xmlns="http://www.spicefactory.org/parsley" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</objects>
var scriptParent:XML = <xml></xml>;
scriptParent.appendChild(tempData);
trace ("scriptParent " + scriptParent);
但是,如果我在我的mxml文件中使用以下代码从外部加载我的xml:
<fx:Declarations>
<fx:XML xmlns="" id="script" source="script.xml"/>
</fx:Declarations>
然后这个打印的结果最终删除了xsi命名空间。我该怎么做才能保留它?感谢。
var scriptParent:XML = <xml></xml>;
scriptParent.appendChild(script);
trace ("scriptParent " + scriptParent);
答案 0 :(得分:0)
我过去遇到过这个问题,而我恐怕无法回答为什么会发生这种情况似乎Flex剥离了导入的XML中任何“未使用”的命名空间(即没有子节点直接引用命名空间) )。以下与您的问题类似的示例演示了这一点:
Text.xml:
<?xml version="1.0"?>
<objects xmlns="http://www.spicefactory.org/parsley" xmlns:myTestNs="http://test.com" xmlns:myUnusedNs="http://testUnused.com">
<myTestNs:test>Test text node</myTestNs:test>
</objects>
使用与上述相同的方法,输出如下:
<xml>
<objects xmlns="http://www.spicefactory.org/parsley">
<myTestNs:test xmlns:myTestNs="http://test.com">Test text node</myTestNs:test>
</objects>
</xml>
如果有人能够解释为什么会发生这种情况,我会感兴趣,因为有许多用例需要维护所有名称空间声明,即使它们当前没有被使用。