我试图在SimpleXMLElement上调用XPath,但我总是得到空数组。 这是XML:
<Produkt>
.....
<Darstellung>
<Info Art="Kurztext" Wert="some info!"/>
<Info ... />
</Darstellung>
</Produkt>
我试过了:
$shortDescription = $Produkt->xpath('//Darstellung/Info[@Art="Kurztext"]/@Wert');
$configurableProduct['short_description'] = (string)$shortDescription[0];
而且:
$configurableProduct['short_description'] = $Produkt->xpath('//Darstellung/Info[@Art="Kurztext"]/@Wert');
在XPath表达式的开头或//
处没有/*
。但是当我转储时,我发现从xpath()
函数返回的数组总是为空。
问题不在未注册的命名空间中,因为XML文件未使用命名空间。我已经有点想法...(在语法中尝试了更多的东西,但是不记得它们了。)
P.S。是的,我确信$Produkt
是一个SimpleXMLElement对象,我已经检查过了。
答案 0 :(得分:0)
此代码
$xmlStr = '<Produkt>
<Darstellung>
<Info Art="Kurztext" Wert="some info!"/>
<Info />
</Darstellung>
</Produkt>';
$xml = simplexml_load_string($xmlStr);
$ret = $xml->xpath('//Darstellung/Info[@Art="Kurztext"]/@Wert');
var_dump((string)$ret[0]);
返回
string(10) "some info!"
是的,$ ret [0]是XMLObject,所以你应该将它强制转换为字符串。