2010年7月18日 星期日

利用 Xpath( Xml Path Language XML查詢語言)來達到搜索功能

雖然我們學會了 Xml DOM 與 Html DOM ,但當 DOM 內容龐大時,要如何找出我們所需的節點內容呢?此時就能使用 Xpath( Xml Path Language XML查詢語言)來達到快速查詢的功能。

Xpath 本身就是一種 Xml 技術的查詢語言,在1999年11月16日成為 W3C 的建議規格,我們可利用 Xpath 查詢語言與運算式當作搜索條件,由於 Xpath 語言內容較為簡單,故在此就不再多作敘述,有興趣可查詢參考資料的內容。以下為 Java 使用 Xpath 的程式碼:

import com.sun.org.apache.xpath.internal.XPathAPI;
// Xpath 套件,可在 Neko HtmlParser官方網站下載到 xerces

public class html{
      Document document;
      NodeList nodelist;
      ......
      public void loadDOM(String URL,input){
                                           // URL 為網站網址,input 為 Xpath 語言
          try {
               parser.parse(URL);  //匯入解析器並產生 DOM
               document=parser.getDocument(); //取得 Document
               //上述為 Html DOM 產生的 Document

               // 若是 XML DOM ,可參考以下兩篇文章
               // XML 載入 DOM 時, DTD 的存放位置與顯示方式
               // 產生具有 外部DTD 的 Document 文件
               ......
               nodelist = XPathAPI.selectNodeList(document, input);
               //將 Xpath 查詢結果以 nodelist 方式回傳
      }
      ......
}

其中需要注意的一點,就是 input 的 Xpath 查詢語言必須都要大寫,要是小寫可能會產生查詢結果不如預期結果,例如抓取所有(或)的標籤:
  1.   //*/A
  2.   //*/a
理論上兩個執行結果應該相同,但 XPathAPI 似乎只會判讀大寫字元,故小寫字元可能會產生不可預期的結果,但不管 DOM 內的標籤是否有大小寫穿插其中,都不會因 Xpath 語言的大小寫而有所差別。


參考資料:

沒有留言:

張貼留言