2012-01-26 36 views
0

引進先輩數據我用下面的代碼使用XPath提取由XPath查詢

$doc = new DOMDocument(); 
$doc->strictErrorChecking = false; 
@$doc->loadHTML($data); 
    $xpath = new DOMXPath($doc); 
//Select the parent node 
$categories =$xpath->query('//span[@class="refinementLink"]/ancestor::a/li/ul'); 
$abcd=array(); 
var_dump($categories); 
foreach ($categories as $category) { 


    $abcd[]=$category->nodeValue; 
     print_r('<br/>'.$abcd); 
    // Crafts, Hobbies & Home (19) 
}` //var_dump($abcd); 

現在,這段代碼做什麼?它選擇一個範圍標記,跨度標籤的DOM列表

UL - 李(4) - A(2) - 跨度(3)

輸出是

對象(的DOMNodeList)[3]

它看起來像我在做的事沒關係,有我的HTML文檔中3個span標籤, 我需要的是,我怎麼能得到這些跨度的文本標籤?我需要跨度標籤 之間的任何幫助?

回答

1

->textContent

foreach ($categories as $category) { 
    $abcd[]=$category->textContent; 
} 
var_dump($abcd); 
+0

抱歉無法理解,看起來像,我必須記住整個列表,同時解決這個問題 –

+0

這是你想要的財產......我有點懶惰,我會添加一點;)無需記住列表(我也沒有),但是如果你想要一個屬性和優秀的php文檔一起工作的話,通讀所有你手邊的對象的文檔。 – Wrikken

+0

$ abcd [] = $ category-> nodeValue-> textcontent;和$ abcd [] = $ category-> textcontent;我嘗試了這些替換,但仍然是相同的輸出 –

0

我想你大概可以拉動@attribute在一開始的時候你做的XPath查詢。 XPath中的謂詞處理您的foreach。

我使用Oxygen IDE中的XML開發人員,它很好地展示了XPath解析XML的方式,因此您可以更加確定期望的內容。

//span/@text[../@class="refinementLink"]/ancestor::a/li/ul 我不知道,如果文字是你的目標文本的屬性,但在XPath中,任何權利之前[ ]是關於你想要選擇的。你選擇它作爲節點,所以你必須在那裏做額外的工作。如果你取出一串字符串,你可能會得到其他的東西。我從來沒有嘗試過,只是提供一個替代思想。