2

私の XML は次のように始まります。

<user>
 <entry>
  <date>December 8, 2012, 6:27 am</date>
  <height>73</height>
  <weight>201</weight>
 </entry>
</user>

このようになるように「エントリ」を追加したい

<user>
 <entry>
  <date>December 8, 2012, 6:27 am</date>
  <height>73</height>
  <weight>201</weight>
 </entry>
 <entry>
  <date>December 9, 2012, 6:27 am</date>
  <height>73</height>
  <weight>200</weight>
 </entry>
</user>

私が使用しているコードは、すべてを最初の<entry>...</entry>タグで囲みます。これが私のPHPコードです。

      $file = 'users/'.$uID.'data.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");

  // original
  echo "<xmp>OLD:\n". $xml->saveXML() ."</xmp>";

  // get document element
  $root   = $xml->documentElement;
  $fnode  = $root->firstChild;

  //add a node
  $ori    = $fnode->childNodes->item(3);

  $today = date("F j, Y, g:i a");

  $ydate     = $xml->createElement("date");
  $ydateText = $xml->createTextNode($today);
  $ydate->appendChild($ydateText);

  $height     = $xml->createElement("height");
  $heightText = $xml->createTextNode($_POST['height']);
  $height->appendChild($heightText);

  $weight     = $xml->createElement("weight");
  $weightText = $xml->createTextNode($_POST['weight']);
  $weight->appendChild($weightText);

  $book   = $xml->createElement("entry");
  $book->appendChild($ydate);
  $book->appendChild($height);
  $book->appendChild($weight);

  $fnode->insertBefore($book,$ori);
  $xml->save('users/'.$uID.'data.xml') or die("Error");

エントリが正しい場所に配置されるようにコードを調整するにはどうすればよいですか? ありがとうございました!

4

1 に答える 1

3

ルート要素 user にエントリを追加する必要があります。

<?php
$file = 'users/'.$uID.'data.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");

// original
echo "<xmp>OLD:\n". $xml->saveXML() ."</xmp>";

// get document element
$root   = $xml->documentElement;

//add a node
$today = date("F j, Y, g:i a");

$ydate     = $xml->createElement("date");
$ydateText = $xml->createTextNode($today);
$ydate->appendChild($ydateText);

$height     = $xml->createElement("height");
$heightText = $xml->createTextNode($_POST['height']);
$height->appendChild($heightText);

$weight     = $xml->createElement("weight");
$weightText = $xml->createTextNode($_POST['weight']);
$weight->appendChild($weightText);

$book   = $xml->createElement("entry");
$book->appendChild($ydate);
$book->appendChild($height);
$book->appendChild($weight);

$root->appendChild($book);
$xml->save('users/'.$uID.'data.xml') or die("Error");
?>
于 2012-12-08T06:27:58.627 に答える