在.Net 里用XPath的case-insensitive 的查询

王朝c#·作者佚名  2008-05-30
窄屏简体版  字體: |||超大  

使用XmlDocument.SelectNodes(String xpath) 是很方便的方法, 可是写XPath 却要费点功夫,

今天发现XPath1.0里没有 case-insensitive 的 function 所以很难做下面的查询

<root>

<AAA>

<BBB>

<CCC>ddd</CCC>

<BBB>

<CCC> GEN</CCC> //也可能是Gen, gen, GEn

</BBB>

</AAA>

<AAA>

<BBB>

<CCC>DFE</CCC>

<BBB>

<CCC> Gen</CCC>

</BBB>

</AAA

</root>

查找所有的CCC节点值为GEN(case-insensitive)的AAA节点, 如果没有后面的Xpath, 要做到以上查询, 挺复杂, 如果会用Xpath 的 translate function, 就很容易了

xpath = @"//root/AAA/BBB/[translate(CCC, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')] = 'GEN'/parent::*"

XmlNodeList nodelist = xmlDoc.SelectNodes(xpath);

xpath的意思是, 把//root/AAA/BBB/CCC节点的value 全部变成大写, 然后和'GEN'比较, 然后返回AAA节点.

http://www.cnblogs.com/happyy2k/archive/2006/10/31/545128.html

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航