0

我试图在 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 文件未使用命名空间。我已经有点想法了......(在语法中尝试了更多的东西,但已经不记得它们了)。

PS 是的,我确定$Produkt是一个 SimpleXMLElement 对象,我已经检查过了。

4

1 回答 1

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,所以你应该把它转换成字符串。

于 2013-10-17T12:05:26.360 回答