我正在使用 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 的命名空间?
我想到了。
1)我有一个缺陷,使用文档名称空间而不是父节点中的名称空间。
2) 通过 #1 的修复,我最终得到了一个空的命名空间 (xmlns="")。为了纠正这个问题,我必须在创建节点时设置名称空间。在我创建节点然后在单独的调用中添加 xmlns 属性之前。
Before:
pNode->createNode(NODE_ELEMENT, name, "");
pAttrib = pNode->createAttribute("xmlns")
pAttrib->put_NodeValue(namespace)
Now:
pNode->createNode(NODE_ELEMENT, name, "namespace");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)