2011-10-05 163 views
1

我有以下xml,但只想返回例如類型&演員僅解析一些具有相同名稱的xml元素

<properties> 
    <group> 
    <name>Product properties</name> 
    <property> 
     <id>43560296</id> 
     <name>Product Title</name> 
      <value>The Ultimate Ronnie Barker Collection</value> 
    </property> 
    <property> 
     <id>43560273</id> 
     <name>Genre</name> 
      <value>Television</value> 
    </property> 
    <property> 
     <id>43560297</id> 
     <name>Actors</name> 
      <value>David Jason , Richard Beckinsale , Ronnie Barker , Fulton McKay , Nicholas Lindhurst</value> 
    </property> 
    <property> 
     <id>43560301</id> 
     <name>Publisher</name> 
     <value>2 Entertain Video</value> 
    </property> 
    </properties> 

做的僅僅是這樣說:

$xml->group->name->property[1]->id->name->value (for genre) 

    $xml->group->name->property[2]->id->name->value (for actors) 

似乎並沒有爲我工作

感謝您的幫助。

達倫

+0

你沒有關閉''。 – Mido

回答

2

XPath是你的朋友,可以用SimpleXML通過xpath()方法。

$properties = $xml->xpath('/properties/group/property[name="Genre" or name="Actors"]'); 

此外,關於您的$xml->group->name…代碼它可能是一個主意,(重新)閱讀文檔頁面「Basic SimpleXML usage」。


加成

如果你想深入到XML獲得一個匹配property然後根據需要調整,以適應XPath的。

$genres = $xml->xpath('/properties/group/property[name="Genre"]'); 
// Remember $genres is an array even if there is only one (or none) item. 
echo $genres[0]->value; 
+0

謝謝,但在簡單的PHP中,我如何提取這個變量名爲$演員&一個名爲$流派的每個部分 - 您的幫助非常感謝! –

+0

@DarrenSweeney請參閱我的編輯示例。 – salathe

0
$properties = new SimpleXMLElement($yourXMLhere); 

echo $properties->group->name->property[1]->id->value; 

echo $properties->group->name->property[2]->id->value; 

是正確的。給我們更多的代碼。

編輯:XML似乎壞了,關閉<group>標記,並檢查'​​樹'。起初,<property>是IN <name>

+0

這是不正確的,因爲該結構在(被公認破壞的)XML中出現了「group-> property」。 – salathe

+0

哦,謝謝,沒有注意到。他沒有關閉'' – Mido

相關問題