Создание видеокарты сайта работает не так, как ожидалось

Итак, я перепробовал множество вещей здесь, но не могу получить правильный вывод для строки элемента.

Вот мой желаемый результат:

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

Кроме того, я попытался использовать этот код из этого примера, но он дает мне ошибку:

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 ответ

Решение

Ок разобрался

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

ОБНОВИТЬ

Я изменил код, так как элементу цены нужен атрибут валюты. Это между /* Цена */ комментарии

Другие вопросы по тегам