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

使用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节点.

时间: 2024-11-18 19:32:56

在.Net 里用XPath的case-insensitive 的查询的相关文章

sql server-请问在SQL SERVER里,有两个表的查询问题怎么解决

问题描述 请问在SQL SERVER里,有两个表的查询问题怎么解决 一个teacher表,一个stu_info表,现在要查询teacher表中每个教师教师名和的学生数 解决方案 join一下 select t.name, count(s.teacherid) from teachers t join stu_info on t.id = stu_info.teacherid where s.teacherid=t.name 解决方案二: SELECT tearcher.name, COUNT(

hibernate-Hibernate 在同一个事务里执行插入之后懒加载查询问题

问题描述 Hibernate 在同一个事务里执行插入之后懒加载查询问题 这样一段代码:他们是在同一个事务下的 public class ObjectA{ private String id; private ObjectB objectB; ...get/set方法:}public void functionA(){ ObjectA a = new ObjectA(); dao.add(a); functionB(a.getId); dao.commit();}public void funct

XPath Hacking技术科普

简介Xpath1.0是一种被很好支持和相当老的在XML文档中选择节点并返回计算后的值的查询语言. 大量的编程语言,包括Java.C/C++.Python.C#.JavaScript.Perl等都拥有自购丰富的库支持Xpath1.0.在一个单一的XML文档中,使用Xpath1.0可以方便的查询过滤节点,举例:<users><user><name>JamesPeter</name><username>jtothep</username>&

DataSet case sensitive issue

今天系统进行了单元测试发现一个bug,不知道怎么回事.我们整个小组花费了半天时间终于找到了问题所在,就是:DataSet case sensitive 原以为在DataSet.Tables.Add(new DataTable(string strTableName))时,是可以随便的,没有想到就是这个东西发生了问题.google 了一下,发现这篇文章:http://blogs.msdn.com/smartclientdata/archive/2005/10/07/478087.aspx  ( E

oracle数据库里,子查询必须写在括号里吗

问题描述 oracle数据库里,子查询必须写在括号里吗 想问一下,子查询必须写在括号里吗,不写在括号里的查询不叫子查询是吗 解决方案 一般都 要将查询结果括号起来,要不语句就会报错了,语法方面的问题.子查询并不是说要写在括号里,而是查询时用到了另一个查询的结果 解决方案二: 可以这么理解,不放在括号里会报错 解决方案三: 写在2015第一天里的 解决方案四: 查询其实是调用了子查询出的值,我感觉就是这样的 解决方案五: 查询其实是调用了子查询出的值,我感觉就是这样的 解决方案六: 恩,不放括号里

java selenium XPath 定位实现方法_java

xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. 阅读目录 什么是xpath xpath定位的缺点 testXpath.html 代码如下 绝对路径定位方式 使用浏览器调试工具,可以直接获取xpath语句 绝对路径的缺点 绝对路径和相对路径的区别 相对路径定位方式 使用索引号定位 使用页面属性定位 模糊定位starts-with关键字 模糊定位contains关键字 text() 函数 文本定位 什么是xpath xpath 是XML Path的简称, 由于H

SqlServer使用 case when 解决多条件模糊查询问题_MsSql

我们在进行项目开发中,经常会遇到多条件模糊查询的需求.对此,我们常见的解决方案有两种:一是在程序端拼接SQL字符串,根据是否选择了某个条件,构造相应的SQL字符串:二是在数据库的存储过程中使用动态的SQL语句.其本质也是拼接SQL字符串,不过是从程序端转移到数据库端而已. 这两种方式的缺点是显而易见的:一是当多个条件每个都可为空时,要使用多个if语句进行判断:二是拼接的SQL语句容易产生SQL注入漏洞. 最近写数据库存储过程的时候经常使用case when 语句,正好可以用这个语句解决一下以上问

JAVA中正则表达式的应用(二)

简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作 的类库包. 它包括两个类: Pattern和 Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式. Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹 配模式对字符串展开匹配检查. 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译 后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下

solr教程,值得刚接触搜索开发人员一看(转载:http://blog.csdn.net/awj3584/article/details/16963525)

Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试;两个核心配置文件介绍;维护索引;查询索引,和在查询中可以应用的高亮显示.拼写检查.搜索建议.分组统计.拼音检索等功能的使用方法. 版本 作者/修改人 日期 V1.0 gzk 2013-06-04 1. Solr 是什么? Solr它是一种开放源码的.基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中.Solr 提供了层面