2017-08-11 66 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"