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

代わりにSimpleXMLの使用を検討してください。XMLWriter既存の xml を変更するためのものではありません。XMLWriter の紹介から:

この拡張機能は、XML データを含むストリームまたはファイルを生成する、キャッシュされていない転送専用の手段を提供するライターを表します。

you を使用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 に答える