我正在使用 C# 和 .NET 2.0。
鉴于下面的 XML,我想获得一个“管理员”XMLNodeList
的<user>
节点。<role>
<users>
<user>
<name>John Doe</name>
<roles>
<role>superadmin</role>
<role>admin</role>
</roles>
</user>
<user>
<name>Jane Doe</name>
<roles>
<role>superadmin</role>
<role>admin</role>
</roles>
</user>
<user>
<name>Rob Doe</name>
<roles>
<role>support</role>
</roles>
</user>
</users>
假设 roleName = "admin"。这有效,但区分大小写。
userNodesForRole = _document.SelectNodes("//users/user[roles[role='" + roleName + "']]");
我想以不区分大小写的方式进行操作。我知道我不能使用该matches
功能,因为 .NET 2.0(也许更高?)不支持 XPath 2.0。所以我这样做了:
// abc...xyz is the string literal of the entire alphabet, of course
userNodesForRole = _document.SelectNodes("//users/user[roles[translate(role,'abc..xyz','ABC...XYZ')='" + roleName.ToUpper() + "']]", _xmlNamespaceManager);
但是,我没有得到任何节点。有人可以告诉我我做错了什么吗?