System.Xml.XmlNode.SelectNodes 方法 (String, XmlNamespaceManager)
方法描述
选择匹配 XPath 表达式的节点列表。 XPath 表达式中的任何前缀都使用提供的 XmlNamespaceManager 进行解析。
语法定义(C# System.Xml.XmlNode.SelectNodes 方法 (String, XmlNamespaceManager) 的用法)
public XmlNodeList SelectNodes( string xpath, XmlNamespaceManager nsmgr )
参数/返回值
参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 |
---|---|---|
xpath | System-String | XPath 表达式。 |
nsmgr | System-Xml-XmlNamespaceManager | 一个 XmlNamespaceManager,用于为 XPath 表达式中的前缀解析命名空间。 |
返回值 | System.Xml.XmlNodeList | 一个 XmlNodeList,包含匹配 XPath 查询的节点集合。 |
提示和注释
XPath 表达式可以包含命名空间。 使用 XmlNamespaceManager 支持命名空间解析。 如果 XPath 表达式包含前缀,则必须将前缀和命名空间 URI 对添加到 XmlNamespaceManager 中。
注意
如果 XPath 表达式不包含前缀,则假定命名空间 URI 为空命名空间。 如果 XML 包含默认命名空间,则您仍必须将前缀和命名空间 URI 添加到 XmlNamespaceManager 中;否则将得不到任何选定的节点。 有关更多信息,请参见 使用 XPath 导航选择节点。
例如,如果您有以下 XML:
复制
下面的 C# 代码选择所有书节点:
复制
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com");
XmlNodeList nodelist = doc.SelectNodes("//ab:book", nsmgr);
注意
使用公式表示 XPath 表达式时的一个常见问题是如何在表达式中包含单引号 (') 或双引号 (")。 如果确实要搜索包含单引号的值,则必须用双引号将该字符串括起来。 如果需要搜索包含双引号的值,则必须用单引号将该字符串括起来。
例如,假设您有以下 XML:
复制
下面的 Visual Basic 代码选择一个包含单引号的元素:
复制
Dim nsmgr As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)
nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com")
nodeList = root.SelectNodes("//ab:book[contains(ab:title,""'Emma'"")]", nsmgr)
该方法是文档对象模型 (DOM) 的 Microsoft 扩展。
基础文档保持不变时,此方法返回的 XmlNodeList 对象将有效。 如果基础文档更改,可能会返回意外结果(不会引发异常)。
System.Xml.XmlNode.SelectNodes 方法 (String, XmlNamespaceManager)例子
该示例使用文件 booksort.xml 作为输入。
Pride And Prejudice Jane Austen 24.95 The Handmaid's Tale Margaret Atwood 29.95 Emma Jane Austen 19.95 Sense and Sensibility Jane Austen 19.95
异常
异常 | 异常描述 |
---|---|
XPathException | XPath 表达式包含 XmlNamespaceManager 中没有定义的前缀。 |
版本信息
.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。