我需要一種方法來選擇兩個標籤之間的文字(第一個標籤和隨後的標籤):
<div> <span>abc</span> defg <br> hijkl <br> mnop <span>qrs</span> tuvw <br> xyz </div>
如何使用xpath表達式僅選擇“defg”?
我嘗試使用following-sibling來找到第一個標籤後面的第一個標籤,但是我找不到選擇它們之間的文字的方法。
following-sibling
使用這個XML輸入,
<div> <span>abc</span> defg <br/> hijkl <br/> mnop <span>qrs</span> tuvw <br/> xyz </div>
XPath表達式/div/span[1]/following-sibling::text()傳回第一個元素後面的5個兄弟文字節點:defg、hijkl、mnop、tuvw和xyz,每個節點都以換行符號開頭和結尾。
/div/span[1]/following-sibling::text()
defg
hijkl
mnop
tuvw
xyz
XPath 1.0表達式normalize-space(/div/span[1]/following-sibling::text())將傳回defg,沒有前導或尾隨空白,作為normalize-space()的參數,透過傳回節點集中的節點的字串值將其轉換為字串,該節點在文件順序中是第一個。
normalize-space(/div/span[1]/following-sibling::text())
normalize-space()
在XPath 2.0及更高版本中,選擇序列中的第一個項目,例如: normalize-space((/div/span[1]/following-sibling::text())[1]),這也適用於XPath 1.0。
normalize-space((/div/span[1]/following-sibling::text())[1])
使用這個XML輸入,
XPath表達式
/div/span[1]/following-sibling::text()
傳回第一個元素後面的5個兄弟文字節點:defg
、hijkl
、mnop
、tuvw
和xyz
,每個節點都以換行符號開頭和結尾。XPath 1.0表達式
normalize-space(/div/span[1]/following-sibling::text())
將傳回defg
,沒有前導或尾隨空白,作為normalize-space()
的參數,透過傳回節點集中的節點的字串值將其轉換為字串,該節點在文件順序中是第一個。在XPath 2.0及更高版本中,選擇序列中的第一個項目,例如:
normalize-space((/div/span[1]/following-sibling::text())[1])
,這也適用於XPath 1.0。