【发布时间】:2018-12-04 05:05:30
【问题描述】:
我需要一点帮助来弄清楚 PHP 中 XML 输出 simple_xml_load 中的 XPath 搜索。我有这个 XML:
<PRODUCTS>
<PRODUCT>
<CODE>5009444</CODE>
<NAME>Prova</NAME>
<IMG>prova.jpg</IMG>
</PRODUCT>
....
....
</PRODUCTS>
我想过滤和遍历这些数据以查找并返回所有带有可变代码的事件。 我使用了这种语法,但没有用
$id = 1;
$struct = \App\Models\Structures::where('id', $id)->first();
$url = 'http://demo.villaggissimi.it/public/xml/CMP_' . $struct->operators->pk .'.xml';
$xc = simplexml_load_file($url) or die("Non sono stati trovati risultati");
$xml2 = $xc->xpath("/PRODUCTS/PRODUCT[CODE='$struct->code']");
return response()->json($xml2);
【问题讨论】:
-
找出所有出现的究竟是什么?
-
我需要迭代具有相同“CODE”值的槽结果。但我不想使用 foreach 和 if 语句,而是直接使用 xpath
-
CODE 是节点名称而不是属性,因此您的 XPath 是错误的,因为它将其作为属性处理。
-
@PatrickMevzek,如果它是一个属性 - 您将在 XPath 中使用
[@CODE= -
请比“没用”更具体。向我们展示minimal reproducible example - 一个我们可以实际测试的小文档,带有您想要的输出、相关代码(我们不需要知道
$url和$struct)以及您得到的输出。
标签: php xml laravel xpath simplexml