用戶登錄  |  用戶注冊
首 頁源碼下載網絡學院最新源碼源碼排行屏蔽廣告
當前位置:新興網絡 > 網絡學院 > 網頁制作 > 網頁制作相關

Xpath中對XML進行模糊查詢

減小字體 增大字體 作者:佚名  來源:本站整理  發布時間:2010-08-02 20:33:47

  如果要對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。

 以下我們還是按照之前那個實例來做幾個測試。
測試使用的XML

<Root>
<Person ID="1001" >
<Name lang="zh-cn" >張城斌</Name>
<Email xmlns="www.quicklearn.cn" > cbcye@live.com </Email>
<Blog>http://cbcye.cnblogs.com</Blog>
</Person>
<Person ID="1002" >
<Name lang="en" >Gary Zhang</Name>
<Email xmlns="www.quicklearn.cn" > GaryZhang@cbcye.com</Email>
<Blog>http://www.quicklearn.cn</Blog>
</Person>
</Root>

使用工具:XMLSpy, 注意之前提到了一個開源的Xpath表達式編輯工具:SketchPath 在執行查詢語句時不能正確的顯示查詢結果。因此建議使用XMLSpy做以下測試。

1.查詢所有Blog節點值中帶有 cn 字符串的Person節點

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

結果:
 image
 

2.查詢所有Blog節點值中帶有 cn 字符串并且屬性ID值中有01的Person節點

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

image

3.查詢受命名空間約束的Email節點的值中帶有“live”字符串,并且Blog節點值中還帶有cn字符串。

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

結果:

image

4.受命名空間約束的節點與不受命名空間約束的節點及屬性的混合查詢

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

結果:

image

5.查詢所有節點中值符合Email構造的節點

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

結果:

image 

通過以上測試,通過使用contrains函數和match函數來進行模糊查詢基本上可以滿足基本的使用需求。另外本篇只是列舉了幾個基本例子,在具體使用的時候還需根據實際的情況靈活運用函數和軸構造Xpath表達式以滿足需求。

Tags:Xpath XML 模糊查詢

作者:佚名
  • 好的評價 如果您覺得此文章好,就請您
      0%(0)
  • 差的評價 如果您覺得此文章差,就請您
      0%(0)

網絡學院評論評論內容只代表網友觀點,與本站立場無關!

   評論摘要(共 0 條,得分 0 分,平均 0 分) 查看完整評論
皮皮麻将官网下载 管理学哪个专业好 qq天津麻将辅助 双色球复式在线投注 pc蛋蛋孔明预测 甘甘肃11选5开奖结果 山西麻将机专卖 吉林时时彩票开奖结果 pk10牛牛是官方开奖吗 极速飞艇彩票官网软件 快乐10分开奖结果查询 全民欢乐捕鱼下载 竞彩足球比分天天盈 彩票最大奖排行 重庆快乐十分开奖结果 金蟾捕鱼手机版单机 wnba比分直播