在 SimpleXML 和 XPath 中设置父节点变量
Setting Parent Node Variable in SimpleXML and XPath
我正在使用 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>
直接使用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>
我正在使用 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>
直接使用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>