У меня есть файл xml
, который имеет такую структуру:
<products>
<group>
<product id="853" symbol="XYZ123" stock="73"></product>
<product id="941" symbol="ERX412" stock="57"></product>
<product id="1960" symbol="UIX981" stock="21"></product>
...
</group>
</products>
Мне нужно извлечь из него только определенные продукты, поэтому я использую этот код:
$xml = simplexml_load_file( 'products.xml', null, LIBXML_NOCDATA );
$ids = [853, 1960];
foreach($ids as $id){
$data = $xml->xpath('//group/product[@id='.$id.']');
$arr[$id] = $data;
}
Это хорошо работает, чтобы получить полный <product>
, но мне нужно получить только запас определенных продуктов (например, для product id 853
stock = 73
).
Какой лучший способ сделать это?
РЕДАКТИРОВАТЬ [ОБНОВЛЕНИЕ]
Я закончил цикл через элементы:
foreach($xml->group->product as $element){
$xml_id = (string)$element->attributes()->id;
if(in_array($xml_id, $ids)){
$arr[$xml_id] = $element->attributes()->stock;
}
}
Это, безусловно, не лучшая идея в мире, но она работает для меня. Я приду с обновлением, если когда-нибудь найду ответ, который не требует зацикливания, как я делаю это прямо сейчас.