使用PHP搜索XML文件

时间:2011-08-25 14:50:12

标签: php xml

我有一个像这样的XML文件:

<quotes>
  <quote>
    <symbol>7UP</symbol>
    <change>0</change>
    <close>45</close>
    <date>2011-08-24</date>
    <high>45</high>
  </quote>
</quotes>

我希望按symbol搜索此文档,并以PHP格式获取匹配的close值。

感谢。

2 个答案:

答案 0 :(得分:7)

使用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

答案 1 :(得分:1)

您可以将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';
}