私はC#と.NET2.0を使用しています。
以下のXMLを前提として、が「admin」で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);
ただし、ノードを取り戻すことはできません。誰かが私が間違っていることを教えてもらえますか?