无法添加" xmlns"属性为sitemap.xml中的urlset

时间:2014-08-13 12:31:41

标签: c# xml sitemap xml-namespaces google-sitemap

我生成了一个sitemap.xml

XDocument xDoc = new XDocument(
    new XDeclaration("1.0", "UTF-8", ""),
    new XElement("urlset",
    new XAttribute("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9"),
    new Element (....and so on...)

我收到错误

前缀''无法在同一个开始元素标记内从''重新定义为'http://www.sitemaps.org/schemas/sitemap/0.9'。

Google要求xmlns属性不带任何前缀。

2 个答案:

答案 0 :(得分:0)

似乎在XDocument中添加默认命名空间是一个有点棘手的相关问题:How to set the default XML namespace for an XDocument

您可以尝试声明默认名称空间前缀,并为<urlset>中的所有元素使用该前缀,如下所示:

XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9";
XDocument xDoc = new XDocument(
    new XDeclaration("1.0", "UTF-8", ""),
    new XElement(ns+"urlset",
    new XElement(ns+"otherElement"),
    new XElement (....and so on...)

答案 1 :(得分:0)

您可以使用以下空白命名空间来解决此问题:

    XNamespace blank = XNamespace.Get(@"http://www.sitemaps.org/schemas/sitemap/0.9");

    XDocument doc = new XDocument(
        new XDeclaration("1.0", "utf-8", "yes"),
        new XElement(blank + "urlset",
            new XAttribute("xmlns", blank.NamespaceName),  
            new XElement(blank + "loc", "http://www.abc.eba/"),               
            new Element (....and so on...)
         ));