XML Dynami c Карта сайта asp.net - PullRequest
0 голосов
/ 07 января 2020

Я пытался создать динамический c Карта сайта, используя Asp. net. Я использую XML файл для записи, который

<?xml version="1.0" encoding="utf-8"?>
<urlset>
</urlset>

и код для Article.aspx с URL

string xmlpath = @"~/data.xml";
var path = Server.MapPath(xmlpath);
XDocument doc = XDocument.Load(path);
XElement root = new XElement("url");
root.Add(new XElement("loc", url));
root.Add(new XElement("lastmod", DateTime.Now.ToString("yyyy-MMdd")));
root.Add(new XElement("lastmod", "daily"));
root.Add(new XElement("priority", "1.0"));
doc.Element("urlset").Add(root);
doc.Save(path);

Этот код работает хорошо, и я получаю XML файл правильно, проблема в том, что консоль поиска Google требует, чтобы я добавил пространство имен xmlns в элемент urlset, поэтому оно должно выглядеть следующим образом:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
</urlset> 

Когда я добавляю имя NameSpace xmlns в <urlset> тег Я получаю эту ошибку:

ссылка на объект не установлена ​​

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Я нашел ответ как "madreflection", упомянутый в коде сообщества Microsoft:

   XNamespace aw = "http://www.sitemaps.org/schemas/sitemap/0.9";
    doc.Element(aw + "urlset").Add(root);

, а мой XML файл

  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
  </url>
  </urlset>
0 голосов
/ 07 января 2020

Мне нравится создавать новый XDocument путем анализа строки, особенно если у вас есть пространства имен

            string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                         "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">" +
                         "</urlset>";

            XDocument doc = XDocument.Parse(xml);
            XElement urlset = doc.Root;
...