在访问xml文档以添加/删除内容时需要一些帮助

时间:2014-04-10 16:34:12

标签: php xml

我正在处理一个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文档中找到此文件名,我就希望删除整个图像对象。同样,我希望能够添加一个新文件名的新图像对象。

如果我的问题很明确,请告诉我。

1 个答案:

答案 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