一个XML文件,我有一个这样的XML文件:搜索使用PHP
<quotes>
<quote>
<symbol>7UP</symbol>
<change>0</change>
<close>45</close>
<date>2011-08-24</date>
<high>45</high>
</quote>
</quotes>
我想symbol
这份文件搜索并获取匹配close
值,在PHP。
谢谢。
一个XML文件,我有一个这样的XML文件:搜索使用PHP
<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
+1好的答案。我会发布一个替代方案,但是如果您喜欢,可以将其添加到您的答案中:'$ close = $ xpath-> evaluate('number(/ quotes/quote [symbol =“7UP”] [1]/close/text())');'(当然是DOMXPath) –
完成。感谢您的建议。 – netcoder
这里是我的代码,bur我有错误'公共函数getStock($符号) \t { \t \t $ api = file_get_contents(“http://stocks.com”); \t \t $ sxml = new SimpleXMLElement($ api); \t \t $ close = $ sxml-> xpath(“// quote [symbol =”。$ symbol。“]/close/text()”); \t \t return reset($ close); // 45 \t}' – Cyberomin
您可以将您的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';
}
你是什么意思'基于“符号”'? 注意:如果可能的话,不会伤害提高您的接受评级。 – Pete171
[使用XPath匹配基于兄弟值的节点]的可能重复(http://stackoverflow.com/questions/912194/matching-a-node-based-on-a-siblings-value-with-xpath) –
我不知道'基于'符号''是什么意思。 – TRiG