生成视频站点地图无法正常工作

时间:2018-07-27 02:10:49

标签: c# xml sitemap google-sitemap

好的,所以我在这里尝试了很多事情,但是无法正确获取元素字符串的输出。

这是我想要的结果:

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

这是我能得到的最接近的东西:

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

因此属性字符串重新排列(顺序错误)。

这是我正在使用的代码:

writer.WriteStartDocument();
writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
writer.WriteAttributeString("xmlns", "video", null, "http://www.google.com/schemas/sitemap-video/1.1");

我还尝试使用this example中的这段代码,但这给了我一个错误:

writer.WriteStartElement("urlset");
writer.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");
writer.WriteAttributeString("xmlns", "video", null, "http://www.google.com/schemas/sitemap-video/1.1");

这是我得到的错误:

  

在同一开始元素标记中,前缀''不能从''重新定义为“ http://www.sitemaps.org/schemas/sitemap/0.9”。

我知道我在这里丢失了一些东西,只是不确定是什么,我也通过Google进行了搜索,但是找不到任何有帮助的东西。 我也尝试过更改函数变量的顺序,只是无法使其正常工作。 有人知道发生了什么吗? 干杯

1 个答案:

答案 0 :(得分:0)

确定了:

writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
writer.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");
writer.WriteAttributeString("xmlns", "video", null, "http://www.google.com/schemas/sitemap-video/1.1");

将输出:

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

以下是输出视频站点地图的完整代码,希望对您有所帮助:

writer.WriteStartDocument();
writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
writer.WriteAttributeString("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");
writer.WriteAttributeString("xmlns", "video", null, "http://www.google.com/schemas/sitemap-video/1.1");

writer.WriteStartElement("url");
writer.WriteElementString("loc", "https://youtube.com");
writer.WriteStartElement("video", "video", "http://www.google.com/schemas/sitemap-video/1.1");
writer.WriteElementString("video", "thumbnail_loc", null, "https://company.com/image-thumb.jpeg");
writer.WriteElementString("video", "title", null, "this is the video title");
writer.WriteElementString("video", "description", null, "this is a video description");
writer.WriteElementString("video", "content_loc", null, "https://company.com/cool-product");
writer.WriteElementString("video", "family_friendly", null, "yes");
/* Price */
writer.WriteStartElement("video", "price", "http://www.google.com/schemas/sitemap-video/1.1");
writer.WriteAttributeString("currency", "AUD");
writer.WriteString("100.00");
writer.WriteEndElement();//video:uploader
/* Price */
writer.WriteElementString("video", "requires_subscription", null, "no");
writer.WriteStartElement("video", "uploader", "http://www.google.com/schemas/sitemap-video/1.1");
writer.WriteAttributeString("info", "https://company.com");
writer.WriteString("My Company");
writer.WriteEndElement();//video:uploader
writer.WriteElementString("video", "live", null, "yes");
writer.WriteEndElement();//video:video
writer.WriteEndElement();//url

writer.WriteEndElement();// urlset
writer.WriteEndDocument();

更新

  

我修改了代码,因为price元素需要使用currency属性。在/ *价格* /评论之间