加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营 > 正文

如何使用Xpath对XML进行有效模糊查询

发布时间:2018-08-22 19:33:54 所属栏目:运营 来源:站长网
导读:烈火建站学院(LieHuo.Net)技术文档 如果要对XML文件进行模糊查找的话是一个比较麻烦的事情,Xpath表达式中没有像文件系统中的*或? 或者有像SQL表达式中的%,这样的模糊查找的通配符。但是还好,在Xpath的函数中提供了像contains和match这样的函数。 contai
  烈火建站学院(LieHuo.Net)技术文档 如果要对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进行模糊查找了。以下我们还是按照之前那个实例来做几个测试。

   测试使用的XML

   使用工具:XMLSpy, 注意之前提到了一个开源的Xpath表达式编辑工具:SketchPath 在执行查询语句时不能正确的显示查询结果。因此建议使用XMLSpy做以下测试。

  1.查询所有Blog节点值中带有 cn 字符串的Person节点

  Xpath表达式:/Root//Person[contains(Blog,'cn')]

  结果:

 如何使用Xpath对XML进行有效模糊查询

  2.查询所有Blog节点值中带有 cn 字符串并且属性ID值中有01的Person节点

  Xpath表达式:/Root//Person[contains(Blog,'cn') and contains(@ID,'01')]

  如何使用Xpath对XML进行有效模糊查询

  3.查询受命名空间约束的Email节点的值中带有“live”字符串,并且Blog节点值中还带有cn字符串。

  Xpath表达式:/Root/Person//*[local-name()='Email' and contains(text(),'live')]/parent::Person

  结果:

  如何使用Xpath对XML进行有效模糊查询

  4.受命名空间约束的节点与不受命名空间约束的节点及属性的混合查询

  Xpath表达式:/Root/Person//*[local-name()='Email' and contains(lower-case(text()),'live')][contains(../Blog,'cn')][contains(../Name/@lang,'zh-cn')]/parent::Person

  结果:

  如何使用Xpath对XML进行有效模糊查询

  5.查询所有节点中值符合Email构造的节点

  Xpath表达式://*[matches(text(),'w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*')]

  结果:

  如何使用Xpath对XML进行有效模糊查询 

  通过以上测试,通过使用contrains函数和match函数来进行模糊查询基本上可以满足基本的使用需求。另外本篇只是列举了几个基本例子,在具体使用的时候还需根据实际的情况灵活运用函数和轴构造Xpath表达式以满足需求。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读