PHP 不是我的世界,所以我需要一些帮助来更新 xml 文件。这是我第一次使用 DOM,似乎没有替换元素。
这是我的 XML:
<?xml version="1.0" encoding="utf-8"?>
<feedback>
<feed id="0">
<title>some title</title>
<desc><![CDATA[some text]]></desc>
</feed>
<feed id="1">
<title>some title</title>
<desc><![CDATA[some text]]></desc>
</feed>
<feed id="2">
<title>some title</title>
<desc><![CDATA[some text]]></desc>
</feed>
</feedback>
和PHP代码:
<?php
if ($_POST['agg']) {
$selid = $_POST['selectedfeed'];
$newtitolo = $_POST['title'];
$newdesc = nl2br($_POST['feed']);
$file = "feedback.xml";
$fp = fopen($file, "rb") or die("cannot open file");
$str = fread($fp, filesize($file));
$xml = new DOMDocument();
$xml->formatOutput = true;
$xml->preserveWhiteSpace = false;
$xml->loadXML($str) or die("Error");
$root = $xml->documentElement;
$oldfeed = $root->getElementsByTagName("feed")->item($selid);
$title = $xml->createElement("title");
$titleText = $xml->createTextNode($newtitle);
$title->appendChild($titleText);
$desc = $xml->createElement("desc");
$descText = $xml->createCDATAsection($newdesc);
$desc->appendChild($descText);
$feed = $xml->createElement("feed");
$feed->appendChild($title);
$feed->appendChild($desc);
$root->replaceChild($feed,$oldfeed);
$xml->saveXML("feedback.xml");
}
?>
对于上面的代码,我需要获取一个具有特定 ID 的“feed”节点,并将 feed 的内容替换为新创建的元素“title”和“desc”(cdata)。
我怎样才能做到这一点?