gpt4 book ai didi

php - 从另一个 xpath 查询节点查询 xpath

转载 作者:行者123 更新时间:2023-12-02 04:33:22 28 4
gpt4 key购买 nike

如何在 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;
}

最佳答案

SimpleXMLElement::xpath() 返回 SimpleXMLElement 对象的数组。您需要从列表中的第一个对象获取数据。

foreach ($xo->xpath("//Orders/Order") as $o) {
$order['total'] = $o->xpath('OrderTotal/Amount')[0];
}

可以使用 Xpath 表达式直接返回标量值。例如,string() 函数将节点列表的第一个元素转换为字符串。 SimpleXML 不支持这些表达式,您需要使用 DOMXpath::evaluate()。

foreach ($xpath->evaluate("//Orders/Order") as $node) {
$order['total'] = $xpath->evaluate('string(OrderTotal/Amount)', $node);
}

这是一个结果处理的小演示:https://eval.in/155586

关于php - 从另一个 xpath 查询节点查询 xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23797379/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com