加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

空命名空间使用Linq Xml

发布时间:2020-12-16 01:54:15 所属栏目:百科 来源:网络整理
导读:我试图创建一个使用Linq到Xml的站点地图,但我得到一个空的命名空间属性,我想摆脱。例如 XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9";XDocument xdoc = new XDocument(new XDeclaration("1.0","utf-8","true"),new XElement(ns + "urls
我试图创建一个使用Linq到Xml的站点地图,但我得到一个空的命名空间属性,我想摆脱。例如
XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9";

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"))));

结果是…

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url xmlns="">
    <loc>http://www.example.com/page</loc>
    <lastmod>2008-09-14</lastmod>
  </url>
</urlset>

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

“更正确的方式”是:
XDocument xdoc = new XDocument(new XDeclaration("1.0",new XElement(ns + "url",new XElement(ns + "loc",new XElement(ns + "lastmod","2008-09-14"))));

与您的代码相同,但在需要位于sitemap命名空间中的每个元素名称前加上“ns”。它足够聪明,不会在生成的XML中放置任何不必要的命名空间声明,因此结果是:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://www.example.com/page</loc>
    <lastmod>2008-09-14</lastmod>
  </url>
</urlset>

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读