我有一个我需要解析的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 =&#34; Newbriefs&#34;,我想返回以下字符串......
FileZ.pdf FileY.pdf FileX.pdf FileW.pdf
我在同一个网站上的PHP代码中成功使用了simplexml,但到目前为止只返回特定元素类型的所有属性的字符串,而不是基于父元素属性。 我已经检查过了,我不确定simplexml是否有能力实现这一目标? 感谢
答案 0 :(得分:1)
您可以使用SimpleXML的xpath
方法轻松完成此操作:
$var = "Newbriefs";
$files = $sxml->xpath("directory[@name='$var']/file/@name");
此查询会将<directory>
标记过滤为 name =“Newbriefs”的标记,然后从所有子<file>
返回名称属性元件。
您可以像处理普通$files
对象一样处理SimpleXMLElement
数组中的每个元素 - 只需将其转换为字符串即可获取内容:
$filename = (string) $files[0]; // FileZ.pdf