空命名空间使用Linq Xml

前端之家收集整理的这篇文章主要介绍了空命名空间使用Linq Xml前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图创建一个使用Linq到Xml的站点地图,但我得到一个空的命名空间属性,我想摆脱。例如
  1. XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9";
  2.  
  3. XDocument xdoc = new XDocument(new XDeclaration("1.0","utf-8","true"),new XElement(ns + "urlset",new XElement("url",new XElement("loc","http://www.example.com/page"),new XElement("lastmod","2008-09-14"))));@H_404_2@
  4. 结果是…

  5. <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  6.   <url xmlns="">
  7.     <loc>http://www.example.com/page</loc>
  8.     <lastmod>2008-09-14</lastmod>
  9.   </url>
  10. </urlset>@H_404_2@ 
  11.  

    我宁愿不在url元素上有xmlns =“”。我可以剥掉它使用Replace在最后的xdoc.ToString(),但是有更正确的方法吗?

“更正确的方式”是:
  1. XDocument xdoc = new XDocument(new XDeclaration("1.0",new XElement(ns + "url",new XElement(ns + "loc",new XElement(ns + "lastmod","2008-09-14"))));@H_404_2@
  2. 与您的代码相同,但在需要位于sitemap命名空间中的每个元素名称加上ns”。它足够聪明,不会在生成XML中放置任何不必要的命名空间声明,因此结果是:

  3. <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  4.   <url>
  5.     <loc>http://www.example.com/page</loc>
  6.     <lastmod>2008-09-14</lastmod>
  7.   </url>
  8. </urlset>@H_404_2@ 
  9.  

    这是,如果我没有错,你想要什么。

猜你在找的XML相关文章