【发布时间】:2011-01-05 22:59:34
【问题描述】:
我正在使用 MSXML 4 生成以下 xml 字符串:
<?xml version="1.0">
<Parent_Element xmlns="http://1">
<Child_One>
<Child_Two xmlns="http://2">
<Child_Three>
</Child_Three>
</Child_Two>
</Child_One>
</Parent>
但是,我的 IXMLDOMDocument2Ptr 的输出始终包含 Child_Three 的命名空间:
<?xml version="1.0">
<Parent_Element xmlns="http://1">
<Child_One>
<Child_Two xmlns="http://2">
<Child_Three xmlns="http://1">
</Child_Three>
</Child_Two>
</Child_One>
</Parent>
我的理解是这种行为是 XML 标准的一部分,但是如果存在额外的命名空间,接收 xml 的系统会拒绝它。如果命名空间为空(即 xmlns=""),它也会拒绝 xml。
MSXML 中是否有避免为 Child_Three 添加或删除命名空间的方法?
【问题讨论】:
-
Child_Three属于哪个命名空间? -
默认情况下,由于没有为 Child_Three 声明命名空间,因此它使用文档命名空间:http://1。我的理解是这是一个 W3C XML 标准。
-
如果
Two获得默认命名空间(不带前缀),每个孩子都会使用该命名空间;所以Three将是http://2