2016-06-09 65 views
0

我有了这样的节点的图像网站地图:如何创建不带xmnls属性的XML节点,比如“image:image”? C#

<image:image xmlns:image="image"> 
    <image:loc> 
    https://website 
    </image:loc> 
    <image:caption/> 
    <image:title>logo72x72</image:title> 
</image:image> 

这是创建它的代码:

XmlNode imageNode = doc.CreateElement("image", "image", "image"); 
XmlNode imageLocNode = doc.CreateElement("image", "loc", "image");       
imageLocNode.AppendChild(doc.CreateTextNode(imageUrl)); 
imageNode.AppendChild(imageLocNode); 

XmlNode imageCaptionNode = doc.CreateElement("image", "caption", "image"); 
imageCaptionNode.AppendChild(doc.CreateTextNode(imageCaption)); 
imageNode.AppendChild(imageCaptionNode); 

XmlNode imageTitleNode = doc.CreateElement("image", "title", "image"); 
imageTitleNode.AppendChild(doc.CreateTextNode(imageTitle)); 
imageNode.AppendChild(imageTitleNode); 

urlNode.AppendChild(imageNode); 

然而,在谷歌搜索控制台我得到一个错误,因为的图片代码,与Google的文档不符。据谷歌称,图片标签应该看起来像<image:image>,而不是<image:image xmlns:image="image">

我将代码更改为doc.CreateElement("image", "image"),但将输出更改为<image xmlns:image="image">(它移除了我想要的部分,并保留了xmnls)。如何防止添加xmlns属性?

编辑:该命名空间在我的文档根宣布:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" 
    xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"> 
+0

您需要在某处声明适当的命名空间。检查文档,总是有声明并且URL也必须匹配。 –

+0

命名空间在我的文档的根目录中声明:

+0

你需要传递Uri_的图像而不是字符串图像作为createelement的第三参数 – tolanj

回答

1

您需要使用正确的命名空间为您的每个元素。命名空间是http://www.google.com/schemas/sitemap-image/1.1,而不是image

doc.CreateElement("image", "image", "http://www.google.com/schemas/sitemap-image/1.1")` 

image是一个命名空间前缀,和一个命名空间前缀必须通过在元件或任何祖先元素xmlns:image="..."中声明。在你的情况下,它是在文档的根目录中声明的,所以不会再次添加。