我有一个相当独特的情况,我需要对XML(或纯文本)文件进行大量编辑。在XML文件中,有几个图像引用,例如:
<image>
<id>image1</id>
<dateTaken>Sun Sep 9 10:57:31 GMT-0700 2012</dateTaken>
<dateAdded>Mon Jun 24 17:44:50 GMT-0700 2013</dateAdded>
<filename>0881DAF2-80EC-7A25-9CF3-BFD67F4EF764.jpg</filename>
</image>
我需要做的是在<filename>
和</filename>
之间使用文件名,并使用它来替换{{1}}和<id>
之间的部分。例如,在上面的例子中,我需要用0881DAF2-80EC-7A25-9CF3-BFD67F4EF764.jpg替换“image1”,所以它看起来像这样:
</id>
我需要在同一份文档中更改几百个这些图像引用。使用PHP或其他方法,我可以快速批量编辑文档,并将<image>
<id>0881DAF2-80EC-7A25-9CF3-BFD67F4EF764.jpg</id>
<dateTaken>Sun Sep 9 10:57:31 GMT-0700 2012</dateTaken>
<dateAdded>Mon Jun 24 17:44:50 GMT-0700 2013</dateAdded>
<filename>0881DAF2-80EC-7A25-9CF3-BFD67F4EF764.jpg</filename>
</image>
和<id>
之间的每个ID替换为</id>
和<filename>
之间的内容,在文档中的每个</filename>
<image>
引用中?非常感谢帮助!
答案 0 :(得分:1)
假设你有一个这个xml的根,你可以通过将xml加载为$ xml_string来执行以下操作:
$xml = new SimpleXMLElement($xml_string);
foreach($xml->children() as $child){
$child->id = $child->filename;
}
$xml->asXml('updated.xml');
$xml = new SimpleXMLElement($xml_string);
foreach($xml->children() as $child){
$child->id = $child->filename;
}
$xml->asXml('updated.xml');