PHP SimpleXML - 如果父属性等于变量值,则获取所有子属性



我有一个XML文件需要解析,如下所示:

<directory name="Addbriefs">
<file name="File1.pdf"/>
<file name="File2.pdf"/>
<file name="File3.pdf"/>
<file name="File4.pdf"/>
</directory>
<directory name="Addusefulinfo">
<file name="FileA.pdf"/>
<file name="FileB.pdf"/>
<file name="FileC.pdf"/>
<file name="FileD.pdf"/>
</directory>
<directory name="Newbriefs">
<file name="FileZ.pdf"/>
<file name="FileY.pdf"/>
<file name="FileX.pdf"/>
<file name="FileW.pdf"/>
</directory>

我正在使用 PHP,并希望能够返回一个字符串,其中包含所有文件元素的所有名称属性,但前提是父元素(目录)的 name 属性与我在其他地方定义的变量匹配。

即如果 $var = "Newbriefs",我想返回以下字符串...

FileZ.pdf FileY.pdf FileX.pdf FileW.pdf

在同一网站的PHP代码的其他地方成功地使用了simplexml,但到目前为止,我只返回了特定元素类型的所有属性的字符串,而不是基于父元素属性是什么。我已经检查过了,但我不确定 simplexml 是否有能力实现这一目标?谢谢

你可以

相当简单地使用SimpleXML的xpath方法做到这一点:

$var = "Newbriefs";
$files = $sxml->xpath("directory[@name='$var']/file/@name");

此查询将 <directory> 标记筛选为 name="Newbriefs" 的标记,然后返回所有子元素<file>name 属性。

您可以像对待普通SimpleXMLElement对象一样对待 $files 数组中的每个元素 - 只需将其转换为字符串即可获取内容:

$filename = (string) $files[0]; // FileZ.pdf

请参阅 https://eval.in/877375

最新更新