我有一个XML文件 - 例如:
<slideshow>
<image src="myPhotos/1.jpg" desc="Sample" />
<image src="myPhotos/2.jpg" desc="Sample" />
<image src="myPhotos/3.jpg" desc="Sample" />
<image src="myPhotos/4.jpg" desc="This is image 4" />
<image src="myPhotos/5.jpg" desc="This is image 5" />
<image src="myPhotos/6.jpg" desc="This is image 6" />
<image src="myPhotos/7.jpg" desc="This is image 7" />
<image src="myPhotos/8.jpg" desc="This is image 8" />
</slideshow>
好吧,我需要帮助的是(没有解释我的整个项目)。我希望PHP通过它的属性在XML文件中查找子节点,该属性为“ src ”。
然后一旦找到正确的属性 - 那么我需要跳转到相同的孩子中的“ desc ”,但!并且只更改“ desc ”属性。
我使用下面的代码 - 但唯一的问题是,如果我的属性值相同,它会更改所有“ desc ”。
<?php
$currentTextHeading = $_POST['currentTextHeading'];
$newTextHeading = $_POST['newTextHeading'];
$dom = new DomDocument;
$dom->load('myPhotos.xml');
$xpath = new DomXPath($dom);
$cAttribs = $xpath->query('//*[@desc= "'.$currentTextHeading.'"]');
foreach ($cAttribs as $entry) {
$entry->setAttribute('desc', $newTextHeading);
}
$dom->save('myPhotos.xml');
header('Location: ' . $_SERVER['HTTP_REFERER']);
die();
?>
我想首先查找“ src ”属性,因为该属性将始终是唯一的,然后更改该子项的“ desc ”并且仅更改该属性!
用户将通过html文本表单更改这些“属性”。