致命错误:未捕获的DOMException:无效的字符错误

时间:2018-01-10 20:38:37

标签: php xml dom element

我有这个问题,关于无效的字符错误,我不理解这种错误。我有一个表单,通过它我将在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");



}

?>

2 个答案:

答案 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>