使用Xpath对XML进行模糊查询
如果要对XML文件进行模糊查找的话是一个比较麻烦的事情,Xpath表达式中没有像文件系统中的“*”或"?" 或者有像SQL表达式中的"%",这样的模糊查找的通配符。但是还好,在Xpath的函数中提供了像contains和match这样的函数。
contains 是一个字符串查找函数 语法是:fn:contains(string1,string2),表示如果 string1 包含 string2,则返回 true,否则返回 false。 例如:contains('XML','XM'),结果:true。 match 是一个匹配正则表达式的函数 语法是:fn:matches(string,pattern),表示如果 string 参数匹配指定的模式,则返回 true,否则返回 false。 例如:matches("12","[0-9]{1,2}"),结果:true。 对于Xpath的一些基础知识可以参考:BizTalk开发系列(三十四) Xpath 这样就可以大概知道如何对XML进行模糊查找了。以下我们还是按照之前那个实例来做几个测试。 1.查询所有Blog节点值中带有 cn 字符串的Person节点 Xpath表达式:/Root//Person[contains(Blog,'cn')]
2.查询所有Blog节点值中带有 cn 字符串并且属性ID值中有01的Person节点 3.查询受命名空间约束的Email节点的值中带有“live”字符串,并且Blog节点值中还带有cn字符串。
4.受命名空间约束的节点与不受命名空间约束的节点及属性的混合查询
5.查询所有节点中值符合Email构造的节点
通过以上测试,通过使用contrains函数和match函数来进行模糊查询基本上可以满足基本的使用需求。另外本篇只是列举了几个基本例子,在具体使用的时候还需根据实际的情况灵活运用函数和轴构造Xpath表达式以满足需求。
//div[contains(text(),'${firstname}')] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |