2014-02-11 24 views
0

我想從html文件生成xPath。到目前爲止,我一直在succeded保存HTML源代碼在一個字符串,並使用匹配的正則表達式如下產生基本的XPath: -java:使用字符串匹配器生成xpath正則表達式

String text = "<html><body><table><tr id=\"x\"><td>abc</td><td></td><td>xyz</td></tr></table></body></html>"; 

//I want xpath till label "xyz" 
     String unwanted= "xyz"; 

//so splitting and storing needed String 
     String[] neededString=text.split(unwanted); 

     String a=""; 

//pattern for extracting tags 
     String patternString1 = "<(.+?)>"; 

     Pattern pattern = Pattern.compile(patternString1); 
     Matcher matcher = pattern.matcher(neededString[0]); 

     while(matcher.find()) { 

      a=a.concat(matcher.group(1)+"/"); 
     System.out.println(a); 

    } 

此代碼適用於基本標籤結構不一樣的在<tr><td>多個子節點。任何人都可以提高我的上述代碼,包括xpath生成多個孩子,也可以捕獲像Ids,類等attrributes

任何幫助,非常感謝。 在此先感謝。

+0

到底爲什麼你認爲使用正則表達式將幫助你在這裏?使用正確的HTML解析器,用正則表達式做這件事是不可能的。 – Tomalak

回答

1

正則表達式對於提取Html內容並不是那麼準確。

使用Jsoup HTML解析器

public static void main(String[] args){ 
     String html = "<html><body><table><tr id=\"x\"><td>abc</td><td></td>" + 
      "<td>xyz</td></tr></table></body></html>"; 

     Document doc = Jsoup.parse(html); 

     for (Element table : doc.select("table")) { 
      for (Element row : table.select("tr[id=x]")) { 
       Elements tds = row.select("td)"); 
       System.out.println(tds.get(2).text()); 
      } 
     } 

     } 
相關問題