3 回答

TA貢獻(xiàn)1794條經(jīng)驗 獲得超7個贊
是的,在XPath 1.0中有一種方法可以做到:
concat(
substring($ s1,1,number($ condition)*字符串長度($ s1)),
substring($ s2,1,number(not($ condition))*字符串長度($ s2))
)
這依賴于兩個互斥字符串的串聯(lián),如果條件為false(0 * string-length(...)),則第一個為空,如果條件為true,則第二個為空。這被稱為“貝克爾方法”,歸因于奧利弗·貝克爾。
在您的情況下:
concat(
子串(
substring-before(// div [@ id ='head'] / text(),':'),
1,
數(shù)(
結(jié)尾為(// div [@ id ='head'] / text(),':')
)
* string-length(substring-before(// div [@ id ='head'] / text(),':'))
),
子串(
// div [@ id ='head'] / text(),
1,
編號(不(
結(jié)尾為(// div [@ id ='head'] / text(),':')
))
*字符串長度(// div [@ id ='head'] / text())
)
)
雖然我會嘗試擺脫"//"以前的所有情況。
同樣,有可能//div[@id='head']返回多個節(jié)點。
請注意,使用//div[@id='head'][1]更具防御性。

TA貢獻(xiàn)1770條經(jīng)驗 獲得超3個贊
根據(jù)pkarat的法律,您可以在1.0版中實現(xiàn)條件XPath。
對于您的情況,請遵循以下概念:
concat(substring-before(your-xpath[contains(.,':')],':'),your-xpath[not(contains(.,':'))])
這肯定會起作用??纯此趺催\作。給出兩個輸入
praba:
karan
對于第一個輸入:它包含的:條件為true,字符串before : 將作為輸出,比如說praba您的輸出。第二條件為假,因此沒有問題。
對于第二個輸入:它不包含,:因此條件失敗,到第二個條件時,字符串不包含,:因此條件為true ...因此karan將拋出輸出。
最后,你的輸出會praba,karan。
- 3 回答
- 0 關(guān)注
- 1192 瀏覽
添加回答
舉報