欢迎光临
我们一直在努力

C#关于xml读取的sitemap操作问题

今天打算用C#读取一下sitemap.xml,然后看看网站里面有哪些页面没有收录,结果却搞了好久,怎么也读不到node,通过百度终于解决。记录一下,有2个知识点。xml是有sitemap生成器生的

<?xml version="1.0" encoding="utf-8"?>
<!--This Site Map File was generated by http://www.linglihu.com at Tue, 24 Mar 2015 11:28:13 GMT-->
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
 <url>
 <loc>http://www.abc.net/</loc>
 <lastmod>2015-03-23</lastmod>
 <changefreq>weekly</changefreq>
 <priority>0.4</priority>
 </url>
 </urlset>

1.尝试读取url节点的内容,返回结果一直是null
产生这个问题的原因就在于上面的xml文档中使用了命名空间,当xml中定义了命名空间时,在查找节点的时候需要使用下面的方法:

XmlNode errorNode = xmldoc.SelectSingleNode("/urlset/url");
XmlNamespaceManager nsMgr = new XmlNamespaceManager(xmldoc.NameTable);
nsMgr.AddNamespace("ns", "http://www.google.com/schemas/sitemap/0.84");
XmlNode errorNode = xmldoc.SelectSingleNode("/ns:urlset/ns:url", nsMgr);

2读取的时候,告诉编译器让它忽略掉里面的注释信息.修改如下:

XmlDocument xmlDoc = new XmlDocument();
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;//忽略文档里面的注释
XmlReader reader = XmlReader.Create(url, settings);
xmlDoc.Load(reader);

不要忘记:reader.Close();
解决了上面2个问题,读取我这个sitemap就没问题了。

更多关于xml的读写 并且这两个解决办法的地址:
http://www.cnblogs.com/linlf03/archive/2011/11/30/2268705.html
http://www.cnblogs.com/a1656344531/archive/2012/11/28/2792863.html
感谢2位作者详细的介绍

赞(0)
未经允许不得转载:衡水seo博客 » C#关于xml读取的sitemap操作问题
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

建站优化更专业 更敬业 更负责

建站报价联系我们