2013-03-21 71 views
1

,我有以下的HTML頁面:如何用xpath選擇一個內部孩子?

<p>foo 
<br>bar 
<!--additional br elements of variable number--> 
<br>https://example.com 
<!--additional br elements of variable number--> 
<br>baz 
</p> 

的鏈接出現在純文本,我需要linkify它。

這不會產生任何的比賽:如果我使用'//text()[contains(.,"https")]'我得到整個文本而不是一個DOM元素的引用,我可以再修改(對周圍添加<a>元素,使

document.evaluate('//*[contains(text(),"https")]' ,document, 
    null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; 

)變得可點擊。)

如何選擇包含此純文本URL的元素,然後我可以對其進行修改?

+0

「* internal *」是什麼意思? – Bergi 2013-03-21 16:42:52

+1

你有什麼嘗試? 「*它不會被選作前面br的文本()*」 -​​ 當然不是,因爲br'元素是空的 – Bergi 2013-03-21 16:47:17

回答

0
/p/text()[3] 

這是我的第一個答案。

+5

歡迎使用堆棧溢出。我嘗試編輯這個以刪除'這是我的第一個答案',因爲它不相關,但由此產生的答案太短而無法接受。你會編輯,也許增加一些關於你爲什麼這樣做的更多細節? – halfer 2013-03-21 17:00:26

0

看來,'//p/text()[contains(.,"https")]/..'將工作選擇p元素,然後正則表達式搜索和替換p的innerHTML將完成該過程。