通过Xpath我们可以快速搜索出我们想要的节点,如:
<?xml version=/"1.0/" encoding=/"ISO-8859-1/"?>
<urlset>
<url>
<loc>http://blog.stevex.net/</loc>
</url>
</urlset>
用下面的代码可以搜索到 url 节点 XmlNodeList urlNodes = doc.SelectNodes("/urlset/url");
但是如果改下xml :
<?xml version=/"1.0/" encoding=/"ISO-8859-1/"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
<loc>http://blog.stevex.net/</loc>
</url>
</urlset>
这时在用XmlNodeList urlNodes = doc.SelectNodes("/urlset/url"); 将返回一个空的list, 也就是搜索不到url 节点
可以使用XmlNamespaceManager来解决这个问题:
XmlNamespaceManager nsMgr = new XmlNamespaceManager(myXmlDoc.NameTable);
nsMgr.AddNamespace("sm", http://www.google.com/schemas/sitemap/0.84);
XmlNode urlNodes = doc.SelectNodes("/sm:urlset/sm:url",nsMgr);
如果加了多个命名空间的话,可以使用其他命名空间来查询节点。