在PHP中使用XPath总是给出空数组

时间:2013-10-17 11:54:04

标签: php xml magento xpath

我试图在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对象,我已经检查过了。

1 个答案:

答案 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,所以你应该将它强制转换为字符串。