每次提交表单时将项目添加到XML——XMLWriter PHP。

3
我有一个HTML表单,当提交后会将值post到一个PHP文件中。这些值将被读入XMLWriter中,代码如下:
<?php 
$pastor= $_POST["Speaker"];
$title= $_POST["Title"];
$link= $_POST["podcasturl"];
$download= $_POST["Download"];
$podcastid= $_POST["Podcastid"];
$pubdate= $_POST ["Date"];

$xml = new XmlWriter();
$xml->openURI('podcast.xml'); 
$xml->formatOutput = true;
$xml->startDocument('1.0'); 
$xml->setIndent(4); 
$xml->startElement("podcast");
$xml->writeElement('pastor', $pastor);
$xml->writeElement('title', $title);
$xml->writeElement('link', $link);
$xml->writeElement('download', $download);
$xml->writeElement('podcastid', $podcastid);
$xml->writeElement('pubdate', $pubdate);
$xml->endElement(); 
$xml->endElement();  
$xml->endDocument();
?>

这个系统整体运作良好。它根据表单按照我需要的方式创建XML。但我无法弄清楚如何使它在每次提交表单时都添加一个新项到XML中,而不是覆盖相同的条目。
谢谢。
1个回答

1
你应该考虑使用SimpleXMLXMLWriter 不适用于修改现有的 XML。从 XMLWriter 介绍: 中可以看到:

此扩展表示一种编写器,提供了一种非缓存、单向生成包含 XML 数据的流或文件的方法。

使用 SimpleXML,你可以像这样做:
$xml = simplexml_load_file("podcast.xml");
$podcast = $xml->addChild("podcast");
$podcast->addChild("pastor", $pastor);
$podcast->addChild("title", $title);
$podcast->addChild("link", $link);
$podcast->addChild("download", $download);
$podcast->addChild("podcastid", $podcastid);
$podcast->addChild("pubdate", $pubdate);

$dom = new DOMDocument("1.0");
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml->asXML());
$dom->save("podcast.xml");

为了使这个例子工作,podcast xml元素应该被包含在一个元素中(见下文),并且`podcast.xml'文件应该已经存在。虽然后者可以通过在加载之前进行检查来克服。
<?xml version="1.0"?>
<podcasts>
  <podcast>...</podcast>
  <podcast>...</podcast>
<podcasts>

你能否建议如何将新数据附加到像sitemap.xml这样的XML文件中?类似于这个stackoverflow帖子 - webblover

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接