3

将帖子值提交到 php 文件时,我有一个 html 表单。然后将这些值读入 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 添加一个新项目,而不是每次都覆盖相同的条目。

谢谢

4

1 回答 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");

为了让这个例子正常工作,podcastxml 元素应该被包装在一个元素中(见下文),并且 `podcast.xml' 文件应该已经存在。尽管后者可以在加载前通过检查来克服。

<?xml version="1.0"?>
<podcasts>
  <podcast>...</podcast>
  <podcast>...</podcast>
<podcasts>
于 2012-12-21T17:22:54.727 回答