У меня есть XML-файл:
<quotes> <quote> <symbol>7UP</symbol> <change>0</change> <close>45</close> <date>2011-08-24</date> <high>45</high> </quote> </quotes>
Я хочу искать этот документ по symbol
и получить соответствующее значение close
в PHP.
Благодарю.
Используйте XPath.
Использование SimpleXML:
$sxml = new SimpleXMLElement($xml); $close = $sxml->xpath('//quote[symbol="7UP"]/close/text()'); echo reset($close); // 45
Использование DOM:
$dom = new DOMDocument; $dom->loadXML($xml); $xpath = new DOMXPath($dom); $close = $xpath->query('//quote[symbol="7UP"]/close/text()')->item(0)->nodeValue; echo $close; // 45
… для числовых значений, в частности, с DOM, вы можете сделать (как было предложено @fireeyedboy ):
$close = $xpath->evaluate('number(//quotes/quote[symbol="7UP"]/close/text())'); echo $close; // 45
Вы можете просто проанализировать свой XML-файл на объект или массив. Это упрощает работу с PHP. Для этого PHP имеет simpleXML
, который включен по умолчанию:
http://www.php.net/manual/en/simplexml.installation.php
Пример:
$xml = new SimpleXMLElement($xmlstr); foreach ($xml->quotes->quote as $quote) { // Filter the symbol echo ( (string) $quote->symbol === '7UP') ? $quote->close : 'something else'; }