我有这个问题,关于无效的字符错误,我不理解这种错误。我有一个表格,通过它,我将在名为"电话簿.xml"的xml文档中插入一些信息。
<?php
if(isset($_POST['submit'])){
$fn=$_POST['f1'];
$lm=$_POST['l1'];
$nt=$_POST['nr'];
$xml=new DomDocument("1.0","UTF-8");
$xml->load("phonebook.xml");
$rootTag=$xml->getElementsByTagname("root")->item(0);
$infoTag=$xml->createElement("Personal Information");
$fnameTag=$xml->createElement("First Name",$fn);
$lnameTag=$xml->createElement("Last Name",$lm);
$ntTag=$xml->createElement("Number Type",$nt);
$infoTag->appendChild($fnameTag);
$infoTag->appendChild($lnameTag);
$infoTag->appendChild($ntTag);
$rootTag->appendChild($infoTag);
$xml->save("phonebook.xml");
}
?>
元素
名称中不允许有空格,因此Personal Information
是无效的标记名称。您可以替换/删除空间。
此外,DOMDocument::createElement(( 的第二个参数有一个中断的转义。最简单的方法是创建内容并将其追加为文本节点。
$document = new DOMDocument("1.0","UTF-8");
$document->appendChild($document->createElement('root'));
$rootTag = $document->documentElement;
$infoTag = $rootTag->appendChild(
$document->createElement("PersonalInformation")
);
$infoTag
->appendChild($document->createElement("FirstName"))
->appendChild($document->createTextNode("John"));
$document->formatOutput = TRUE;
echo $document->saveXML();
输出:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<PersonalInformation>
<FirstName>John</FirstName>
</PersonalInformation>
</root>
问题是我不应该在个人信息之间留出空格,而应该是:P ersonalInformation。