2017-08-11 63 views
0

我有一個包含西班牙文和英文的產品說明一個XML文件中讀取XML節點值,這裏的例子:PHP:根據參數值

<property> 
<descriptions> 
<description language="es"><text><![CDATA[Lorem ipsum Spanish description]]></text></description> 
<description language="en"><text><![CDATA[Lorem ipsum English description]]></text></description> 
</descriptions> 
</property> 

我使用PHP腳本來處理XML和進口值數據庫。這裏是我得到的第一個產品說明的值:

$Spanish_Description= $property->descriptions->description[0]->text; 

然而,在一些產品的XML文件西班牙說明至上和其他產品,所以我不能依賴於節點順序號排第二。

如何修改我的PHP代碼以專門查找<description language="es"></description>的值?

回答

0

您可以使用XPath,或者只是測試你想要的那個..

$language="en"; 
foreach ($property->descriptions->description as $description) { 
    if ($description['language'] == $language) { 
     echo "For:".$description['language'].'='.$description->text.PHP_EOL; 
    } 
} 

$text=$property->xpath("//description[@language='$language']/text")[0]; 
echo (string)$text; 
+0

通過使用'echo'值隱式轉換爲字符串,不需要使用'(字符串)'強制轉換。 –

+0

我傾向於使用它,因爲人們並不總是想要回應價值,並且在其他情況下使用時,演員陣容可能變得重要。 –

+0

這工作完美。謝謝! – MyMadWeb

0

的SimpleXML的對象上這XPath查詢有很大的幫助與此:

$nodes = $xml->xpath('//property[descriptions[description[@language="es"]]]'); 
$node = $nodes[0]; 
print_r($node); 

它可以讓你直接訪問特定的描述與屬性language="es"