HTML フォームに基づいて XML ファイルを出力するコードを作成しましたが、出力形式は次のような単なる長い文字列です。
<?xml version="1.0"?>
<students>
<student><name>Joey Lowery</name><email>jlowery@idest.com</email><cell>555-555-5555</cell><dob>1999-03-31</dob><study>8</study></student></students>
これではなく:
<?xml version="1.0"?>
<students>
<student>
<name>Joey Lowery</name>
<email>jlowery@idest.com</email>
<cell>555-555-5555</cell>
<dob>1999-03-31</dob>
<study>8</study>
</student>
</students>
formatOutput = true
と同様に使用していますが、機能しpreserveWhiteSpace = false
ていません。これが私のコードです:
if(isset($_POST['submit'])) {
$file = "data.xml";
$userNode = 'student';
$doc = new DOMDocument('1.0');
$doc->load($file);
$doc->preserveWhiteSpace = true;
$doc->formatOutput = true;
$root = $doc->documentElement;
$post = $_POST;
unset($post['submit']);
$user = $doc->createElement($userNode);
$user = $root->appendChild($user);
foreach ($post as $key => $value) {
$node = $doc->createElement($key, $value);
$user->appendChild($node);
}
$doc->save($file) or die("Error");
header('Location: thanks.php');
}