XML对象删除命名空间Flex

时间:2011-02-20 01:36:41

标签: xml flex namespaces

使用以下代码,一切都按预期工作,我保留默认命名空间和跟踪打印输出中的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);

1 个答案:

答案 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>

如果有人能够解释为什么会发生这种情况,我会感兴趣,因为有许多用例需要维护所有名称空间声明,即使它们当前没有被使用。

相关问题