c# – 使用Linq to XML查询google sitemap.xml的问题
发布时间:2020-12-16 01:35:55 所属栏目:百科 来源:网络整理
导读:我有一个 Linq-2- XML查询,如果我创建的谷歌站点地图的urlset元素填充了属性,但如果没有属性存在则可以正常工作. 无法查询: ?xml version="1.0" encoding="utf-8"?urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http:/
我有一个
Linq-2-
XML查询,如果我创建的谷歌站点地图的urlset元素填充了属性,但如果没有属性存在则可以正常工作.
无法查询: <?xml version="1.0" encoding="utf-8"?> <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://www.foo.com/index.htm</loc> <lastmod>2010-05-11</lastmod> <changefreq>monthly</changefreq> <priority>1.0</priority> </url> <url> <loc>http://www.foo.com/about.htm</loc> <lastmod>2010-05-11</lastmod> <changefreq>monthly</changefreq> <priority>1.0</priority> </url> </urlset> 可以查询: <?xml version="1.0" encoding="utf-8"?> <urlset> <url> <loc>http://www.foo.com/index.htm</loc> <lastmod>2010-05-11</lastmod> <changefreq>monthly</changefreq> <priority>1.0</priority> </url> <url> <loc>http://www.foo.com/about.htm</loc> <lastmod>2010-05-11</lastmod> <changefreq>monthly</changefreq> <priority>1.0</priority> </url> </urlset> 查询: XDocument xDoc = XDocument.Load(@"C:Testsitemap.xml"); var sitemapUrls = (from l in xDoc.Descendants("url") select l.Element("loc").Value); foreach (var item in sitemapUrls) { Console.WriteLine(item.ToString()); } 这是什么原因? 解决方法
请参阅XML中的“xmlns =”标记?您需要指定命名空间.测试代码的以下修改:
XDocument xDoc = XDocument.Load(@"C:Testsitemap.xml"); XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9"; var sitemapUrls = (from l in xDoc.Descendants(ns + "url") select l.Element(ns + "loc").Value); foreach (var item in sitemapUrls) { Console.WriteLine(item.ToString()); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |