【发布时间】:2022-01-06 03:49:45
【问题描述】:
因此,这里以 MWE XML 为例
<manifest xmlns="http://iuclid6.echa.europa.eu/namespaces/manifest/v1"
xmlns:xlink="http://www.w3.org/1999/xlink">
<general-information>
<title>IUCLID 6 container manifest file</title>
<created>Tue Nov 05 11:04:06 EET 2019</created>
<author>SuperUser</author>
</general-information>
<base-document-uuid>f53d48a9-17ef-48f0-8d0e-76d03007bdfe/f53d48a9-17ef-48f0-8d0e-76d03007bdfe</base-document-uuid>
<contained-documents>
<document id="f53d48a9-17ef-48f0-8d0e-76d03007bdfe/f53d48a9-17ef-48f0-8d0e-76d03007bdfe">
<type>DOSSIER</type>
<name xlink:type="simple"
xlink:href="f53d48a9-17ef-48f0-8d0e-76d03007bdfe_f53d48a9-17ef-48f0-8d0e-76d03007bdfe.i6d"
>Initial submission</name>
<first-modification-date>2019-03-27T06:46:39Z</first-modification-date>
<last-modification-date>2019-03-27T06:46:39Z</last-modification-date>
</document>
</contained-documents>
</manifest>
在这种情况下,我想找到一个属性 xlink:href 并将 name 标记替换为 xlink:href 引用的文件的内容 - 在本例中为 f53d48a9-17ef-48f0-8d0e-76d03007bdfe_f53d48a9-17ef -48f0-8d0e-76d03007bdfe.i6d(也是 XML 格式文件)。
目前我使用 simplexml 将其拉入一个对象,然后使用 xml2json 库将其转换为一个递归数组 - 但使用普通方法遍历它并没有给我修改父节点的方法..
我不确定如何备份层次结构 - 有什么建议吗??
【问题讨论】:
-
“目前我使用 simplexml 将其拉入对象,然后使用 xml2json 库将其转换为递归数组”——这听起来很糟糕;一旦你这样做了,你就抛弃了 PHP 的所有内置 XML 功能。查看the functionality SimpleXML actually provides,以及more complex but powerful DOM API。
-
会看看,但现在真的想拆开一个可怕的可怕的 XML 文档结构.. :) 所以我去这个地方的原因是我想把所有东西都塞进一个数组中待处理..
-
看看 SimpleXML 和 DOM API - 我实际上不需要将东西保存在 XML 中,而且这两个库都没有提供我可以在数组处理程序下获得的功能 - 我必须自己编写搜索功能并以不同方式处理遍历结构..所以我将留在数组库中:)
-
但话又说回来 - array_walk_recursive 实际上只提供单个键,所以这对我也没有帮助:)
-
但这让我可以递归地遍历 XML 结构 :) stackoverflow.com/questions/17095484/…