我有这个PHP代码,它将一组节点添加到XML文件中。它完成了它应该做的大部分工作,它找到了添加的位置,但是没有进行更新。XML更新PHP中的一组节点
我有这种结构的xml文件。
<COMMUNITIES>
<COMMUNITY ID="c001">
<URLS>
<URL ID="u001">
<NAME>Google.com</NAME>
<URL>http://www.google.com</URL>
</URL>
</URLS>
</COMMUNITY>
</COMMUNITIES>
正在对URLS节点进行更新。用户点击“添加URL”链接,然后像这样将新的URL添加到此节点。
<URL ID="u002">
<NAME>Yahoo.com</NAME>
<URL>http://www.yahoo.com</URL>
</URL>
如果URLS节点存在,我追加新的url节点。如果URLS节点不存在,我创建它,然后附加新的url节点。
没有错误,似乎一切正常,但URLS节点是空的。这是PHP脚本。
function add_url($nodeid, $urlid, $urlname, $urllink) {
$dom = new DOMDocument();
$dom->load('communities.xml');
$dom->formatOutput = true;
$dom->preserveWhiteSpace = false;
// get document element
$xpath = new DOMXPath($dom);
$nodes = $xpath->query("//COMMUNITY[@ID='$nodeid']");
if ($nodes->length) {
$node = $nodes->item(0);
$xurl = $dom->createElement("URL");
$xurl->setAttribute("ID", $urlid);
$xuname = $dom->createElement("NAME");
$xunameText = $dom->createTextNode(mysql_escape_mimic($urlname));
$xuname->appendChild($xunameText);
$xulink = $dom->createElement("URL");
$xulinkText = $dom->createTextNode(mysql_escape_mimic($urllink));
$xulink->appendChild($xulinkText);
$xurl->appendChild($xuname);
$xurl->appendChild($xulink);
$xurls = $xpath->query("//COMMUNITY[@ID='$nodeid']/URLS");
if ($xurls->length) {
}
else {
$xurls = $dom->createElement("URLS");
}
$xurls->appendChild($xurl);
/* $node->appendChild($xurls); */
}
$dom->save('communities.xml');
}
我认为问题在于我在追加URLS节点时已经存在。但是我注意到了这一点。我相信问题很简单,但我是新手。我在网站上看了一下,没有找到具体的情况。
编辑
删除return语句
if ($xurls->length)
之前。固定功能。
我添加了return语句来调试脚本。我删除了它,并且不添加URL。 – user823527
这个脚本有什么问题? – user823527
希望我可以帮忙,但我刚刚结束了它,老实说,我不知道。我真的从来没有使用过PHP的DOM函数,所以我有点失落...... – DaveRandom