我有这个问题,关于无效的字符错误,我不理解这种错误。我有一个表单,通过它我将在xml文档中插入一些名为“phonebook.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");
}
?>
答案 0 :(得分:0)
问题是我不应该在个人信息之间留出空间,但应该是:个人信息。
答案 1 :(得分:0)
元素名称是允许在其中包含空格的节点,因此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>