【发布时间】:2014-12-01 01:07:06
【问题描述】:
我正在使用 file_get_contents 函数获取一个 xml,然后用它创建一个 SimpleXMLElement。
问题是我需要获取 lfm->artist->image[@size='small'] 的值,却找不到怎么做。
【问题讨论】:
-
这似乎朝着你的方向发展:stackoverflow.com/questions/6837479/…
我正在使用 file_get_contents 函数获取一个 xml,然后用它创建一个 SimpleXMLElement。
问题是我需要获取 lfm->artist->image[@size='small'] 的值,却找不到怎么做。
【问题讨论】:
您应该为此使用 DOMXPath:http://php.net/manual/en/class.domxpath.php
此 XPath 查询适用于您的 XML:
\\lfm\artist\image[@size='small']
如下:
$doc = new DOMDocument();
$doc->loadXML($url);
$xpath = new DOMXpath($doc);
$elements = $xpath->query("\\lfm\artist\image[@size='small']");
if (!is_null($elements)) {
foreach ($elements as $element) {
echo "<br/>[". $element->nodeName. "]";
$nodes = $element->childNodes;
foreach ($nodes as $node) {
echo $node->nodeValue. "\n";
}
}
}
【讨论】:
xpath() 函数从 SimpleXMLElement 对象获得。请参阅:php.net/manual/en/simplexmlelement.xpath.php,是的,这种方式看起来最简单。
file_get_contents 和 loadXML 行。而是使用 loadHTMLFile() 并传入 XML url。见已编辑。