2009-06-01 112 views
0

我並不完全陌生於PHP或XML,但我將PHP與PHP配合使用是100%新手。我有一個XML字符串,有幾個節點,但我唯一有興趣的是<關鍵字>節點,每個節點有一個不確定的數字,每個節點都包含一個像這樣的短語:<關鍵字>藍色鑽石首飾< /關鍵字>例如say該字符串是這樣的:PHP:從特定的XML節點類型獲取文本數組?

<xml> 
<pointless_node/> 
<seq> 
<keyword>diamond ring</keyword> 
<keyword>ruby necklace</keyword> 
<keyword>mens watch</keyword> 
</seq> 
<some_node/> 
</xml> 

我想這樣的一個數組:

['diamond ring','ruby necklace','mens watch'] 

我試圖尋找在PHP手冊,只是感到困惑,不知道該怎麼做。有人可以請我通過如何做到這一點?我正在使用PHP4。

謝謝!

回答

1

This turns $keywords into an array of Objects. Is there a way to get the text from the objects?

當然,看到這一點。

$dom = domxml_open_mem($str); 
$keywords = $dom->get_elements_by_tagname('keyword'); 

foreach($keywords as $keyword) { 
    $text = $keyword->get_content(); 
    // Whatever 
} 
0

看到:http://www.php.net/simplexml-element-xpath 試試下面的XPath和陣列結構

$string = "<xml> 
<pointless_node/> 
<seq> 
<keyword>diamond ring</keyword> 
<keyword>ruby necklace</keyword> 
<keyword>mens watch</keyword> 
</seq> 
<some_node/> 
</xml>"; 

$xml = domxml_open_mem($xmlstr) 

$xpath = $xml->xpath_new_context(); 
$result = xpath_eval($xpath,'//keyword'); 

foreach ($result->nodeset as $node) 
{ 
    $result[] = $node->dump_node($node); 
} 

編輯:修改後的代碼,以反映PHP 4級的要求 編輯:修改帳戶xpath_new_context的不良記錄行爲(PHP文檔評論指出錯誤)

+1

是不是simplexml僅適用於php版本> 5? – Silfverstrom 2009-06-01 15:36:02

+0

我甚至會用'//關鍵字/文本()`xpath – 2009-06-01 15:37:01

+0

啊...... *檢查文檔*非常正確....回到繪圖板。 – 2009-06-01 15:37:31

0

我認爲最簡單的就是:

$dom = domxml_open_mem($str); 
$keywords = $dom->get_elements_by_tagname('keyword');