2013-10-13 45 views
2

我剛剛開始使用XPath處理最近的工具。 目前我只是逐行解析一些頁面並採取相關文本。Xpath,php以及如何跳過特定的節點(以及它的子節點)

我想要做的是排除頂部div,它的子元素

基本上我在看這個:

<html> 
    <head> Foo </head> 
    <body> 

    <div id='header'> 
     <ul id='menu'> <li> Bar </li> <li> FooBar </li> <li> BarFoo </li> </ul> 
    </div> 

    <table> <tr> <td>data</td><td>data</td> </tr> </table> 

    <div> 
     <p>Lorem Ipsum</p> 
     <p>dolor sit amet</p> 
    </div> 

    </body> 
</html> 

除了更多的內容。

目前我環路通過與每個節點:

$dom = new DOMDocument; 
$dom->loadHTMLFile('http://www.test.com/test.htm'); 

$xpath = new DOMXPath($dom); 
$nodes = $xpath->query('/html/body//*'); 

foreach($nodes as $node) { 
    echo $node->nodeValue; 
} 

我想忽略整個頭節點。

有沒有簡單的方法來那?

+0

我喜歡血腥的樂趣日(你的頭像是從哪裏來的) – Gordon

回答

2

這將工作:

/html/body//*[not(ancestor-or-self::div[@id="header"])] 

中的XPath選擇體元件下方的所有節點,除非它們與「報頭」或該div本身的id屬性值的DIV的祖先。

檢查http://schlitt.info/opensource/blog/0704_xpath.html的XPath教程。

+0

是的..這是我還要發佈的一個..但你做了.. :)非常感謝你的教程鏈接.. –

+0

啊,真棒。謝謝,我的谷歌福從未甚至提出了該網站。 – Squish

相關問題