Ищите и получайте с XMLreader и PHP - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть фид xml, и что искать в XMLreader для значения типа EAN, когда я нахожу это значение, я хочу получить все XML в элементе, в котором находится значение EAN. Могу ли я это сделать?

<prods>
  <prod>
    <ean>price</ean>
    <ean>1234</ean>
  </prod>
  <prod>
    <ean>price</ean>
    <ean>123</ean>
  </prod> 
</prods>

Так что, если я ищу значение в EAN 1234, я хочу получить элемент дырки. 1 уровень выше своего рода поговорка.

<prod>
    <ean>price</ean>
    <ean>1234</ean>
</prod>

1 Ответ

0 голосов
/ 03 апреля 2020

Вы можете использовать Xpath для выбора узла prod с вашим условием:

$content = '<prods>
  <prod>
    <ean>price</ean>
    <ean>1234</ean>
  </prod>
  <prod>
    <ean>price</ean>
    <ean>123</ean>
  </prod> 
</prods>' ;

$xml = simplexml_load_string($content);
$nodes = $xml->xpath("//prod[ean = '1234']") ; // get all prod nodes that satisty "an ean child has content '1234' " 
echo $nodes[0]->asXml(); 

Выход:

<prod>
    <ean>price</ean>
    <ean>1234</ean>
</prod>
...