我正在处理一个XML文档,其结构如下所示,我正在尝试添加/删除图像对象,而不必将xml文档视为文本。每个图像对象对应于相册中的图片。
<?xml version="1.0" encoding="UTF-8"?>
<gallery galleryTitle="Photo Album">
<image imageURL="../Photoalbum/artwork/eb98e388e14b11008d4ffb595b9ed3e6.jpg"
thumbURL="../Photoalbum/artwork/thumbs/tn_eb98e388e14b11008d4ffb595b9ed3e6.jpg"
linkURL="../Photoalbum/artwork/eb98e388e14b11008d4ffb595b9ed3e6.jpg"
linkTarget="_blank">
<title>A Title</title>
<caption>A caption</caption>
</image>
</gallery>
我已经能够使用下面的代码访问和打印整个xml文件
if (file_exists('file.xml')) {
$xml = simplexml_load_file('file.xml');
print"<pre>";
print_r($xml);
}
但到目前为止还无法访问图像对象的各个字段。将添加/删除的对象将通过唯一的文件名识别,例如eb98e388e14b11008d4ffb595b9ed3e6.jpg,因此一旦在XML文档中找到此文件名,我就希望删除整个图像对象。同样,我希望能够添加一个新文件名的新图像对象。
如果我的问题很明确,请告诉我。
答案 0 :(得分:0)
使用xpath()
选择<image>
- 节点。 xpath
就像SQL for XML:
$image = $xml->xpath("/gallery/image[contains(@imageURL, $filename)]");
...和unset()
删除该节点:
if (isset($image[0])) unset($image[0][0]);
看到它有效:https://eval.in/135145
使用搜索功能查看如何使用<image>
添加新的SimpleXml
。