2011-05-14 58 views
0

如何在不復制周圍標記的情況下抓取xPath的內容?抓取沒有周圍標記的xPath內容

<div id="node-123" class="clearfix"> 
        <div class="content"> 
         <div class="body"> 
          <p><img src="/images/image.jpg"/></p> 
          <p>Some content ....</p> 
         </div>  
        </div> 
       </div> 

如果我用//div[@id='node-123']/div/div,我仍然得到周圍<div class="body">預計不。

我想是的<div class="body">內容,但不包括本<div class="body">標記,但保留的內容,P,IMG內的其他標記等

我試圖用通配符://div[@id='node-123']/div/div/*,但這隻能取第一其中p可以是兩個或多個。使用node()不會獲取任何東西。

任何提示將非常感激。

感謝

+1

這很奇怪,因爲我剛剛在http://xpath.online-toolz.com/tools/上測試了'// div [@ id ='node-123']/div/div/*' xpath-editor.php,它爲我返回2段。可能不是XPath表達式中的問題,但您如何獲取結果? – 2011-05-14 13:11:06

+0

事實上,消息測試的結果也會返回2個段落,但是當涉及到所見即所得編輯器時,它僅返回第一段。不知何故在某處被ckeditor修剪過。我使用了http://drupal.org/project/feeds_xpathparser drupal 7模塊。 – swan 2011-05-14 13:20:06

+1

我在實際的原始文章中發現了未終止的img標記的問題:''而不是' .'我的。 – swan 2011-05-14 13:32:12

回答

2

如果我用 //div[@id='node-123']/div/div,我還是 得到周圍<div class="body">預計不。

我想是的<div class="body">的內容,但不包括本<div class="body">標記,但保留裏面的內容 其他標記,pimg

使用

//div[@id='node-123']/div/div/node() 

這選擇任何的孩子的所有節點(元素,文本節點,處理指令和註釋節點)元素是任何div元素的子元素,該元素是文檔中任何div元素的子元素,使得其id屬性的值爲'node-123'。

警告它始終是一個很好的做法不使用//僞操作如果XML文檔的結構是靜態已知。使用//僞操作符的結果通常非常慢,導致完全樹遍歷。

+0

使用node()顯示的測試結果與預期一致,奇怪的是它沒有像預期的那樣存儲到textarea中。假設解析器出現問題。無論有無整齊都表現得很奇怪。奇怪,但感謝節點()的解釋。 – swan 2011-05-14 18:54:25

+0

@swan:不客氣 – 2011-05-14 19:28:56

0

的問題是,在實際的原創文章未結束的img標籤:<img src="/images/image.jpg">而不是<img src="/images/image.jpg"/>.