Php simpleXML基于属性获取节点子节点

Php simpleXML基于属性获取节点子节点,php,xml,simplexml,Php,Xml,Simplexml,我正试图解析出一个节点的值,该节点由它的一个属性引用。但我不确定语法 XML: 如果任何人有任何资源,包括这些东西,请分享 只需循环海报元素,并记住将属性值强制转换为字符串,因为您希望将它们作为字符串进行比较(并可能输出): $xml = simplexml_load_file('PosterData.xml'); foreach ($xml->poster as $poster) { if ((string) $poster['id'] == 'minwage') {

我正试图解析出一个节点的值,该节点由它的一个属性引用。但我不确定语法

XML:


如果任何人有任何资源,包括这些东西,请分享

只需循环海报元素,并记住将属性值强制转换为字符串,因为您希望将它们作为字符串进行比较(并可能输出):

$xml = simplexml_load_file('PosterData.xml');

foreach ($xml->poster as $poster) {
    if ((string) $poster['id'] == 'minwage') {
        echo (string) $poster->full_image['url'];
    }
}
您可以使用:

$object = simplexml_load_string('<data><poster name="E-Verify" id="everify"><full_image url="e-verify-swa-poster.jpg"/><full_other url=""/></poster><poster name="Minimum Wage" id="minwage"><full_image url="minwage.jpg"/><full_other url="spa_minwage.jpg"/></poster></data>');

foreach ($object as $value) {
    echo "URL: ".$value->full_image->attributes();
    echo "<br>";
}
$object=simplexml\u load\u字符串(“”);
foreach($objectas$value){
回显“URL:”.$value->full_image->attributes();
回声“
”; }
如果调用外部文件,可以使用
simplexml\u load\u file('Some external file.xml')

您应该能够使用在简单的xml文档上运行

$xml = simplexml_load_file('PosterData.xml');
$main_url = $xml->xpath('name[@id="minwage"]/full_image')[0];

echo $main_url;

这很有魅力。我仔细考虑了这个过程+1这就是我最初尝试的方式。感谢您提供的信息。这比循环要优雅得多,应该是例外的答案。我一直在尝试通过在本地主机上复制代码来实现这段代码,但我得到了“未定义的偏移量:0”请参见:name[@id=“minwage”]”中的“name”不应该是“poster”吗?因为元素是一个“海报”元素?正如您所要求的资源,是的,有:和
$object = simplexml_load_string('<data><poster name="E-Verify" id="everify"><full_image url="e-verify-swa-poster.jpg"/><full_other url=""/></poster><poster name="Minimum Wage" id="minwage"><full_image url="minwage.jpg"/><full_other url="spa_minwage.jpg"/></poster></data>');

foreach ($object as $value) {
    echo "URL: ".$value->full_image->attributes();
    echo "<br>";
}
$xml = simplexml_load_file('PosterData.xml');
$main_url = $xml->xpath('name[@id="minwage"]/full_image')[0];

echo $main_url;