2017-04-23 48 views
0

我試圖從html響應中查找特定的節點內容。由於節點元素包含換行符,因此我試圖找到一些難以定位的特定節點。我正在嘗試在xpathtester網站和我的測試xml是提供下面。如何查找包含換行符或html格式的文本的節點的Xpath

<html> 
     <table > 
     <tr > 
      <th colspan="3"> 
      <table > 
       <tr valign="bottom"> 
       <th scope="col" align="left">Test 
        <br/> Item1</th> 
       <th scope="col">:</th> 
       <th scope="col" align="left">ABC123</th> 
       <th rowspan="7"> 
        <img width="100" height="140" src="xyzcontenturl.jpg"/> 
       </th> 
       </tr> 
       <tr valign="bottom"> 
       <th scope="col" align="left">Test 
        <br/> Item2</th> 
       <th scope="col" >:</th> 
       <th scope="col" align="left" colspan="2" >DEF789</th> 
       </tr> 
      </table> 
      </th> 
     </tr> 
    </table> 
     <p> 
     <strong/> 
     </p> 
    </html> 

的想法是拿起第三列標題文本,我可以放置一個條件//第[含有(文本(),「測試」)] /以下同胞::第[2]/text()來定位它(返回的值是ABC123)。

挑戰是當我試圖找到基於特定節點的值即ie。 「測試項目1」。 由於換行符文本「測試」和「項目1」我無法使用的功能「之間坐在包含或開始 - 用。

我怎樣寫的XPATH,這樣我可以拿起與TH元素值`「測試< BR/>的Item1」

注:?提供的XML是示出因此問題第一個表頭(th元素)或第二表頭(TH)元件等不會幫助樣品

回答

0

比較針對normalize-space(),其取代換行符與單個空間(未HTML <br/>是明確的):

//th[normalize-space()='Test Item1']/following-sibling::th[2]/text() 

demo

的函數接收內th所有文本節點的級聯作爲參數,做空格標準化上的參數並返回結果。從鏈接說明書引述:

normalize-space函數返回參數串與空白通過汽提的前緣和後空白和由單個空間置換的空白字符序列歸一化。

0

如果您在代碼中使用XPath,則獲取元素並使用「InnerText」屬性 如果fr om XSL使用text()函數。 你打電話給XPath的是什麼?

+0

我正在尋找一種通用的xpath表達式,可以在不將評估邏輯轉換爲代碼的情況下做到這一點。 – Lin

+0

因爲您似乎不願意使用代碼,所以我會假設「generic」= XSL。嘗試使用text()或har07從XSL提到normalize-space()。 –

相關問題