我的目的是写入结点不带命名空间。
朋友帮忙看看。
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
  <url>
    <loc>http://www.hq.com/</loc>
    <lastmod>2011-02-11</lastmod>
    <priority>1.0</priority>
  </url>
  <url xmlns="" /> <!--写入节点带有命名空间-->
</urlset>XmlDocument doc = new XmlDocument();
doc.Load(@"G:\资料\Net\Chem169\Project\Web\sitemap.xml");
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.google.com/schemas/sitemap/0.84");
XmlNode objRootNode = doc.SelectSingleNode("//ab:urlset", nsmgr);//CreateElement +3 重载,并未发现合适的
XmlElement objChildNode = doc.CreateElement("url"); 
objRootNode.InsertBefore(objChildNode, objRootNode.SelectSingleNode("//url[2]"));
doc.Save(@"G:\资料\Net\Chem169\Project\Web\sitemap.xml");
Console.ReadKey();

解决方案 »

  1.   

    insertBefore 语法: oElement = object.insertBefore(oNewNode, oChildNode)在 oChildNode 之前插入新的节点 oNewNode,返回插入了的这个新节点引用。在 IE 中如果省略 oChildNode,则当作追加 oNewNode,而其它浏览器中则不能省略,所以我们编程时,应该当作不可省略来使用
      

  2.   

    XmlElement objChildNode = doc.CreateElement("", "url", "http://www.google.com/schemas/sitemap/0.84"); 就可以了