国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
c# 添加xml節(jié)點多了xmlns屬性問題

今天用c#程序生成百度站點地圖文件sitemap.xml的時候,創(chuàng)建url節(jié)點多了莫名的多了xmlns屬性。原來是上級節(jié)點有這個屬性,而子節(jié)點也要指定,不然就會多這個。問題原因:

當父節(jié)點具有XMLNS屬性時,子節(jié)點必須指定XMLNS屬性,但是當子節(jié)點的XMLNS屬性與父節(jié)點命名空間相同時,子節(jié)點不顯示XMLNS屬性,上面問題的根本所在就是我們理解上的錯誤,認為我沒有為子節(jié)點指定命名空間,就不應該出現(xiàn)此屬性,恰恰相反,當我們?yōu)槠渲付ㄅc父節(jié)點相同的命名空間時,此屬性才不會出現(xiàn)。

原始xml文件內容


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">
  3. <url>
  4. <loc>http://m.example.com/index.html</loc>
  5. <mobile:mobile type="mobile" />
  6. <lastmod>2009-12-14</lastmod>
  7. <changefreq>daily</changefreq>
  8. <priority>0.8</priority>
  9. </url>
  10. </urlset>
添加節(jié)點的c#代碼



  1. public static bool AddUrl2(SitemapUrl model)
  2. {
  3. XmlDocument doc = new XmlDocument();
  4. doc.Load(@"c:\test.xml");
  5. var rootNode = doc.GetElementsByTagName("urlset");
  6. if (rootNode.Count == 1)
  7. {
  8. var loc = doc.CreateElement("loc");
  9. loc.InnerText = model.loc;
  10. var lastmod = doc.CreateElement("lastmod");
  11. lastmod.InnerText = model.lastmod;
  12. var changefreq = doc.CreateElement("changefreq");
  13. changefreq.InnerText = model.changefreq;
  14. var priority = doc.CreateElement("priority");
  15. priority.InnerText = model.priority;
  16. var url = doc.CreateElement("url");
  17. url.AppendChild(loc);
  18. url.AppendChild(lastmod);
  19. url.AppendChild(changefreq);
  20. url.AppendChild(priority);
  21. var root = rootNode[0];
  22. root.AppendChild(url);
  23. doc.Save(@"c:\test.xml");
  24. return true;
  25. }
  26. else
  27. return false;
  28. }
新加的節(jié)點



  1. <url xmlns="">
  2. <loc>http://www.baidu.com/</loc>
  3. <lastmod>2014-12-02</lastmod>
  4. <changefreq>daily</changefreq>
  5. <priority>1</priority>
  6. </url>
新節(jié)點多了一個xmlns屬性,這個屬性是表示命名空間的意思

原來是url的父節(jié)點urlset有這個屬性,在用c#插入xml節(jié)點的時候沒有傳入這個參數(shù),所以要修復這個問題,不想要這個屬性就優(yōu)傳入就可以了。調用CreateElement一個重載方法

doc.CreateElement("url", doc.DocumentElement.NamespaceURI);

完整代碼:
  1. public static bool AddUrl(SitemapUrl model)
  2. {
  3. XmlDocument doc = new XmlDocument();
  4. doc.Load(@"c:\test.xml");
  5. var rootNode = doc.GetElementsByTagName("urlset", doc.DocumentElement.NamespaceURI);
  6. if (rootNode.Count == 1)
  7. {
  8. var loc = doc.CreateElement("loc", doc.DocumentElement.NamespaceURI);
  9. loc.InnerText = model.loc;
  10. var lastmod = doc.CreateElement("lastmod", doc.DocumentElement.NamespaceURI);
  11. lastmod.InnerText = model.lastmod;
  12. var changefreq = doc.CreateElement("changefreq", doc.DocumentElement.NamespaceURI);
  13. changefreq.InnerText = model.changefreq;
  14. var priority = doc.CreateElement("priority", doc.DocumentElement.NamespaceURI);
  15. priority.InnerText = model.priority;
  16. var url = doc.CreateElement("url", doc.DocumentElement.NamespaceURI);
  17. url.AppendChild(loc);
  18. url.AppendChild(lastmod);
  19. url.AppendChild(changefreq);
  20. url.AppendChild(priority);
  21. var root = rootNode[0];
  22. root.AppendChild(url);
  23. doc.Save(@"c:\test.xml");
  24. return true;
  25. }
  26. else
  27. return false;
  28. }
注意:url的子節(jié)點(如:loc,lastmod)創(chuàng)建的也得傳入doc.DocumentElement.NamespaceURI這個參數(shù),不然也會多了一個xmlns=""。當然從開始就沒有指定xmlns,就不用這們傳入doc.DocumentElement.NamespaceURI了。
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
多個sitemap文件該如何處理 如何向搜索引擎提交多個sitemap文件?
網站地圖sitemap.xml解析
.Net生成站點sitemap供百度抓取的類和使用
怎樣創(chuàng)建sitemap文件
dedecms制作網站地圖 wordpress經典google sitemap
網站優(yōu)化教程:網站地圖的建立
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服