Php Simplexml:按id选择元素,并返回某个子元素
我需要一些关于simplexml xpath的建议。我的整个网站都有一个主XML文件,如下所示:Php Simplexml:按id选择元素,并返回某个子元素,php,xpath,simplexml,Php,Xpath,Simplexml,我需要一些关于simplexml xpath的建议。我的整个网站都有一个主XML文件,如下所示: <content> <item id="001"> <title>Video 1</title> <video> <file>video001.mp4</file> <dur>01:20</dur> </video> <
<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>
视频1
视频001.mp4
01:20
视频2
video002.mp4
**03:53**
现在我想回显id为“2”的项的视频的持续时间,它将是字符串“03:53”
似乎是simplexml的简单用法,但大量的教程只涉及循环和按数组编号选择。我想通过id访问父元素,并获取它的某个子元素的字符串
提前谢谢!
Runa您可以为此使用XPath: 您的代码应该如下所示(或多或少): 这是PHPFIDLE
可能您还应该对字符串强制转换xpath结果,但我不确定。我刚刚在内部测试了这段代码的xpath部分,它工作得很好。您可以使用xpath实现这一目的: 您的代码应该如下所示(或多或少): 这是PHPFIDLE
可能您还应该对字符串强制转换xpath结果,但我不确定。我刚刚在内部测试了这段代码的xpath部分,它运行得很好。在PHP>=5.4中,可以执行$result=$xml->xpath('/content/item[@id=2]/video/dur')[0];并删除下一行。谢谢,但它不能正常工作。我得到一个空响应,而不是字符串。省略行$result=$result[0];可能你的PHP版本低于5.4,这是非常常见的,除非你有最新的WAMP/XAMP版本(我假设你在本地主机上)。顺便说一句,如果有帮助,请接受我的回答。PHP版本5.4.9和SimpleXML在我真正的Web服务器上启用。上面提到的xpathtester说“什么也没找到”()。SimpleXML并不像我想的那么简单:)问题似乎出在[@id=…]。在PHP>=5.4中,您可以执行$result=$xml->xpath('/content/item[@id=2]/video/dur')[0];并删除下一行。谢谢,但它不能正常工作。我得到一个空响应,而不是字符串。省略行$result=$result[0];可能你的PHP版本低于5.4,这是非常常见的,除非你有最新的WAMP/XAMP版本(我假设你在本地主机上)。顺便说一句,如果有帮助,请接受我的回答。PHP版本5.4.9和SimpleXML在我真正的Web服务器上启用。上面提到的xpathtester说“什么也没找到”()。SimpleXML并不像我想的那么简单:)问题似乎出在[@id=…]。当我将[0]替换为其他脚本中的[0]时,它会在phpter中引起同样的问题。
$xml = simplexml_load_file('path/to/xml/file.xml');
$result = $xml->xpath('/content/item[@id=2]/video/dur/text()');
$result = $result[0];
echo $result;