System.Xml.XmlDocument.SelectNodes() 查询不到节点问题?
Posted on 2008-10-31 15:55 james.dong 阅读(3582) 评论(0) 编辑 收藏 举报今天在使用xmldocument.selectnodes()函数时遇到查询满足一定条件的节点时,无法查找到相应的节点。
后来google了一下,原来是自定义名字空间惹的祸。
下面是xml文件内容:
<?xml version="1.0" encoding="utf-8"?>
<aaaa>
<bbbb>1234</bbb>
<bbbb>4567</bbbb>
<bbbb>8989</bbbb>
</Report>
-----------------------------------------------------------------------------------------
using System.Xml;
public class aaaa
{
public void Search1()
{//我用下列代码查询 无节点
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("*.xml");
string filter = "//*[contains(bbbb,'8989']";
XmlnodeList list = xmlDoc.SelectNodes(filter);//此处查询的节点个数为0
}
public void Search2()
{//用这个方法就可以查询到了
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("*.xml");
XmlNamespaceManager m = new XmlNamespaceManager ( xmldoc.NameTable );
m.AddNamespace("ab",
"http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition");
string filter = "//ab:*[contains(ab:bbbb,'8989']";
XmlnodeList list = xmlDoc.SelectNodes(filter);//此处查询的节点个数为1
}
}
当使用xmldocument.selectnodes()时,如果xml文件中有自定义的名字空间的话,在使用selectnodes()函数时,增加名字空间。