【发布时间】:2014-05-22 03:31:01
【问题描述】:
如何在 PHP 中查询另一个 xpath 查询的节点结果?
假设我有以下 XML:
<Orders>
<Order>
<OrderTotal>
<Amount>15.45</Amount>
<CurrencyCode>USD</CurrencyCode>
</OrderTotal>
<ShippingAddress>
<Name>John Doe</Name>
<CountryCode>US</CountryCode>
<StateOrRegion>TX</StateOrRegion>
<City>Austin</City>
</ShippingAddress>
</Order>
</Orders>
这似乎不起作用:
foreach ($xo->xpath("//Orders/Order") as $o) {
$order['total'] = $o->xpath('OrderTotal/Amount');
}
如果我执行以下操作,那么 total 将有一个值,但我不能像存储 xpath 字符串那样存储对象链:
foreach ($xo->xpath("//Orders/Order") as $o) {
$order['total'] = (string)$o->OrderTotal->Amount;
}
【问题讨论】:
-
提供一些示例数据
-
已将其添加到帖子中!
-
它对我有用:
$order['total'][0] == '15.45'; -
运气不好。我只是不断收到这个:prntscr.com/3lfj4z
-
抱歉,应该指定我使用的是 PHP 5.4。我只是想通了问题。如果我将
$order['total'] = $o->xpath('OrderTotal/Amount');更改为$order['total'] = (string)$o->xpath('OrderTotal/Amount')[0];,那么它可以工作。