Simplexml:通过id选择元素,a回显某个子元素


Simplexml: Select element by id a echo a certain child element

我需要一些关于simplexml-xpath的建议。我有一个适用于我整个网站的主XML文件,如下所示:

<content>
<item id="001">
    <title>Video 1</title>
    <video>
        <file>video001.mp4</file>
        <dur>01:20</dur>
    </video>
</item>
<item id="2">
    <title>Video 2</title>
    <video>
        <file>video002.mp4</file>
        **<dur>03:53</dur>**
    </video>
</item>
</content>

现在我想回显id为"2"的项目的视频持续时间,这将是字符串"03:53"。

这似乎是simplexml的简单用法,但大量的教程只涉及循环和按数组编号进行选择。我想通过父元素的id来访问它,并获取它的某个子元素的字符串。

提前感谢!运行

您可以为此目的使用XPath:http://php.net/manual/en/simplexmlelement.xpath.php

你的代码应该是这样的(或多或少):

$xml = simplexml_load_file('path/to/xml/file.xml');
$result = $xml->xpath('/content/item[@id=2]/video/dur/text()');
$result = $result[0];
echo $result;

这是phpFiddlehttp://phpfiddle.org/main/code/9hc-yqi

也许您还应该将xpath结果强制转换为字符串,但我不确定。我刚刚在里面测试了这段代码的xpath部分http://www.xpathtester.com/而且效果很好。