使用DOM或SIMPLE XML修改xml节点?

时间:2012-09-13 18:15:19

标签: php xml dom

我在这里有源XML:http://www.grilykrby.cz/rss/pf-heureka.xml。我想使用这个xml feed并在我自己的服务器上创建另一个修改。我想更改包含单词Prislusenstvi的每个节点CATEGORYTEXT。我只是尝试了一些东西,但我只得到所有类别的列表而不更改XML :-( 以下是我的代码示例。行$ kategorie =“nejaka kategorie”;不起作用。

<?php
$file = "http://www.grilykrby.cz/rss/pf-heureka.xml";
$xml=simplexml_load_file($file);
foreach ($xml->xpath('//SHOPITEM/CATEGORYTEXT') as $kategorie) {
echo $kategorie."<br />";
$kategorie="nejaka kategorie";
}
file_put_contents('test.xml', $xml->asXML()); 
?>

1 个答案:

答案 0 :(得分:0)

$kategorie只是循环中使用的临时变量,它包含xpath查询返回的数据副本。您需要直接在$xml对象中设置值。

在将其解析为simpleXML对象之前,我个人还会考虑在XML内容中自己做str_replacepreg_replace

最终接受的答案

<?php
$xml = simplexml_load_file('http://www.grilykrby.cz/rss/pf-heureka.xml');
$i=0;
foreach($xml -> SHOPITEM as $polozka) {
    if ($polozka -> CATEGORYTEXT == "Příslušenství") $xml -> SHOPITEM[$i] -> CATEGORYTEXT = "Some other text";
    $i++;
}
?>