用XmlDocument创建一个文档,或者插入一个节点,默认会生成xmlns(命名空间)特性。

假定有一个xml文档如下结构:

<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>http://www.myWebSite.com/</loc>
</url>
<url>
<loc>http://www.myWebSite.com/MGID_17</loc>
</url>
<url>
<loc>http://www.myWebSite.com/MGID_18</loc>
</url>
</urlset>

现在要在urlset插入一个url节点,结果如下:

<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
…………………………
<url>
<loc>New Value Here</loc>
</url>

</urlset>

C#代码如下:

XmlDocument doc = new XmlDocument();
doc.Load("XMLFile1.xml");
XmlElement newEle = doc.CreateElement("url");
XmlElement subEle = doc.CreateElement("loc");
subEle.InnerText = "New Value Here";
newEle.AppendChild(subEle);
doc.DocumentElement.AppendChild(newEle);
doc.Save("d:\\try.xml");

结果会在url节点加上"xmlns",非常讨厌吧!

因为默认情况下,创建的Xml节点会自动判断其自身的NameSpace和父节点(比如url插入到urlset,自动判断url的Namespace和父节点的Namespace)是否一致,如果一致那么就不会再添加

因此解决方案是:

XmlDocument doc = new XmlDocument();
doc.Load("XMLFile1.xml");
XmlElement newEle = doc.CreateElement("url",doc.DocumentElement.NamespaceURI);
XmlElement subEle = doc.CreateElement("loc",newEle.NamespaceURI);
subEle.InnerText = "textboxValue";
newEle.AppendChild(subEle);
doc.DocumentElement.AppendChild(newEle);
doc.Save("d:\\try.xml");
结论:插入到哪个父节点,直接用红体字获取自身节点命名空间,然后插入即可

最新文章

  1. ubuntu16.04.1下的mysql修改默认编码
  2. Android消息机制源码分析
  3. Python单元测试框架之pytest -- fixtures
  4. 【JavaScript】关于prototype
  5. mysql索引补充
  6. (转)inux Read系统调用
  7. XXX is not in the sudoers file.This incident will be reported
  8. Android-------手机屏幕适配之文件适配
  9. Flask 学习 十六 部署
  10. 关于&#39;selffilter&#39; is not a registered tag library. Must be one of:
  11. Linux命令之top、ulimit、free
  12. python阶段性总结
  13. 浅谈Cocos2d-js cc.director
  14. db nosql redis / Redis Sentinel
  15. MySQL数据库-外键链表之一对多,多对多
  16. vs2010点调试,显示系统找不到指定的文件
  17. screen 命令使用及示例
  18. vue-cli中实现全选、单选计算总价格(vue2.0)
  19. ajax 整个表单的提交
  20. jquery ajax 传数据到后台乱码的处理方法

热门文章

  1. delphi创建服务程序
  2. sqlServer组合主键
  3. C# 继承(4)
  4. rtabmap and rtabmap_ros make error(rtabmap编译错误)
  5. Codeforces Round #545 (Div. 2)D(KMP,最长公共前后缀,贪心)
  6. python3好用的mysql.connector库
  7. memcached 和 redis 安装
  8. 在Ninject 向构造参数中注入具有相同类型的参数
  9. 0.jQuery选择器
  10. url 路径的拼接