问题描述
我正在尝试向此XML文档添加名为member
的新XML元素:
<?xml version="1.0" encoding="UTF-8"?>
<members>
<member id="1" position="president">
<firstname>John</firstname>
<surname>Smith</surname>
<score>12</score>
</member>
<member id="2">
<firstname>Hank</firstname>
<surname>Rogers</surname>
<score>18</score>
</member>
<member id="3" position="secretary">
<firstname>Joe</firstname>
<surname>Ashton</surname>
<score>21</score>
</member>
</members>
这是我的PHP脚本:
function updateDom() {
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->load("members.xml");
$member = $dom->createElement("member");
$firstname = $dom->createElement("firstname");
$surname = $dom->createElement("surname");
$score = $dom->createElement("score");
$firstnameValue = $dom->createTextNode("New");
$surnameValue = $dom->createTextNode("New");
$scoreValue = $dom->createTextNode("New");
$firstname->appendChild($firstnameValue);
$surname->appendChild($surnameValue);
$score->appendChild($scoreValue);
$dom->documentElement->appendChild($member);
print $dom->saveXML();
}
不幸的是,当我print $dom->saveXML();
没有将新元素插入DOM时,它确实会打印:
JohnSmith12HankRogers18JoeAshton21
- 我该如何解决?
解决方法
如果您检查输出XML,则最后会看到一个空的<member/>
,因为您没有将任何子元素附加到$member
:
function updateDom() {
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->load("members.xml");
$member = $dom->createElement("member");
$firstname = $dom->createElement("firstname");
$surname = $dom->createElement("surname");
$score = $dom->createElement("score");
$firstnameValue = $dom->createTextNode("New");
$surnameValue = $dom->createTextNode("New");
$scoreValue = $dom->createTextNode("New");
$firstname->appendChild($firstnameValue);
$surname->appendChild($surnameValue);
$score->appendChild($scoreValue);
// Append child elements
$member->appendChild($firstname);
$member->appendChild($surname);
$member->appendChild($score);
$dom->documentElement->appendChild($member);
print $dom->saveXML();
}