我正在使用PHP和SimpleXML / XPath,我只是想知道如何将某个父(具有某个属性值)设置为等于变量,我可以在'foreach'中使用它?
我目前收到此错误:
Notice: Array to string conversion
和此输出
Array
感谢任何线索。
这是php代码:
<?php
$url = "test_b.xml";
$xml = simplexml_load_file($url);
$xml_report_abbrev_b = $xml->xpath('//poster[@name="U-Verify"]')[0];
if($xml_report_abbrev_b){
foreach($xml_report_abbrev_b as $node_a) {
echo '<h1>'.$node_a->xpath('/full_image/@url').'</h1>';
}
} else {
echo 'XPath query failed';
}
?>
这是xml:
<data>
<poster name="U-Verify" id="uverify">
<full_image url="u-verify.jpg"/>
<full_other url=""/>
</poster>
<poster name="Minimum" id="min">
<full_image url="min.jpg"/>
<full_other url="spa_min.jpg"/>
</poster>
</data>
答案 0 :(得分:1)
直接使用SimpleXML的元素访问和属性访问而不是使用XPath查询将使代码更简单,性能更好。 您的代码可以缩减为......
$xml_report_abbrev_b = $xml->xpath('//poster[@name="U-Verify"]');
if($xml_report_abbrev_b){
echo '<h1>'.$xml_report_abbrev_b[0]->full_image['url'].'</h1>';
} else {
echo 'XPath query failed';
}
请注意echo
行所示的方式 - 使用从XPath表达式中找到的<poster>
元素,使用<full_image>
元素并获取url
属性。
我还将[0]
移到if
中,因为如果XPath没有找到值,则会产生错误,因为没有任何数据可以从中获取值。
这输出......
<h1>u-verify.jpg</h1>