VC 使用MSXML创建新结点时出现xmlns="" 属性解决方法

在VC中使用MSXML创建xml文件,在使用下面代码:

问题原因:当父节点具有XMLNS属性时,子节点必须指定XMLNS属性,但是当子节点的XMLNS属性与父节点命名空间相同时,子节点不显示XMLNS属性.

上面问题的根本所在就是我们理解上的错误,我们认为没有为子节点指定命名空间,就不应该出现此属性,恰恰相反,当我们为其指定与父节点相同的命名空间时,此属性才不会出现

那么如何去掉前缀
xmlns=""呢?
代码如下::
pXMLSubElementRoot = pDoc->createNode("element","LoginInfo","http://DCMPlatform/v2.0");
pXMLRoot - > a(pXMLSubElementRoot);
而不用
createElement_x_x_x_x_x

其中LoginInfo节点名称.
http://DCMPlatform/v2.0 是前面定义的名字空间名!

或者是将父节点的信息设置如下,子节点的默认节点名字空间与父节点一样:
父节点修改代码如下:
    pXMLRoot = pDoc->selectSingleNode("DCMCatalogueResult");
    pXMLRoot->setAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");
    pXMLRoot->setAttribute("xmlns:xsd","http://www.w3.org/2001/XMLSchema");
    pXMLRoot->setAttribute("xmlns","http://DCMPlatform/v2.0");

[cpp]  view plain copy
  1. <pre class="cpp" name="code">//创建一个层      
  2. pLeyer = pDoc->createElement((_bstr_t)"g");  
  3. pLeyer->setAttribute("id","Head_Layer");  
  4. //创建一个节点      
  5. pNode = pDoc->createElement((_bstr_t)"rect");  
  6. pNode->setAttribute("x","0");  
  7. pNode->setAttribute("y","0");  
  8. pNode->setAttribute("width","1650");  
  9. pNode->setAttribute("height","906");  
  10. pNode->setAttribute("fill","rgb(0,0,0)");  
  11. //添加节点到层  
  12. pLeyer->appendChild(pNode);  
  13. //将层添加到根  
  14. xmlRoot->appendChild(pLeyer);  
  15. </pre>  
  16. <pre></pre>  
  17. <p>建立一个新结点时,生成的结点中出现xmlns="" 属性,如下xml:</p>  
  18. <pre class="html" name="code"><g xmlns="" id="Head_Layer">  
  19.     <rect x="0" y="0" width="1650" height="906" fill="rgb(0,0,0)"/>  
  20. </g></pre>  
  21. <p>自动的添加了xmlns="" 属性,查了资料,解决办法如下代码:</p>  
  22. <pre class="cpp" name="code">/********引用包含**********/  
  23. VARIANT   vtTemp;   
  24. vtTemp.vt   =   VT_I2;   
  25. vtTemp.iVal   =   1;     
  26. _bstr_t   namespaceURI="http://www.w3.org/2000/svg";   
  27.   
  28. //创建一个层   
  29. pLeyer = pDoc->createNode(vtTemp,(_bstr_t)"g",namespaceURI);  
  30. pLeyer->setAttribute("id","Head_Layer");  
  31. //创建一个节点      
  32. pNode = pDoc->createNode(vtTemp,(_bstr_t)"rect",namespaceURI);  
  33. pNode->setAttribute("x","0");  
  34. pNode->setAttribute("y","0");  
  35. pNode->setAttribute("width","1650");  
  36. pNode->setAttribute("height","906");  
  37. pNode->setAttribute("fill","rgb(0,0,0)");  
  38. //添加节点到层  
  39. pLeyer->appendChild(pNode);  
  40. //将层添加到根  
  41. xmlRoot->appendChild(pLeyer);</pre>  
  42. <p>使用createNode创建结点。<br>  
  43. </p>  





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值