Я знаю, что это должно быть просто, но я новичок в PHP и просто не понимаю документацию, с которой я столкнулся. Мне нужно простое объяснение.PHP appendChild to XML root
У меня есть документ XML, к которому я бы хотел добавить узлы. Я могу добавить узлы в документ, они появляются только за пределами корневого узла и вызывают ошибки при последующих попытках.
Вот мой XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
</root>
и вот мой PHP:
$playerID = "id_" . $_POST['player'];
//load xml file to edit
$xml = new DOMDocument();
$xml->load('../../saves/playerPositions.xml') or die("Error: Cannot load file.");
//check if the player is already in the database
if(isset($xlm->$playerID)){
echo "Player ID was found.";
}
else{
echo "Player ID was not found.";
//so we want to create a new node with this player information
$playerElement = $xml->createElement($playerID, "");
$playerName = $xml->createElement("name", "John Doe");
//add the name to the playerElement
$playerElement->appendChild($playerName);
//add the playerElement to the document
//THIS IS WHERE THE ERROR OCCURS
$xml->root->appendChild($playerElement);
//save and close the document
$xml->formatOutput = true;
$xml->save("../../saves/playerPositions.xml");
}
echo "done";
Если я просто использовать $xml->appendChild()
то я могу изменить документ, но новый текст вне <root></root>
.
Точная ошибка:
Notice: Undefined property: DOMDocument::$root
Какой из них вы имеете в ваш фактический код, '$ xml-> root -> ...' или '$ xml -> $ root -> ...'? – har07
Если я использую $ xml-> root-> appendChild(), тогда ошибка DOMDocument :: $ root Если я использую $ xml -> $ root-> appendChild(), тогда ошибка DOMDocument :: root Но я я использую «корень», поскольку я понимаю, что это был более правильный способ сделать это.OP - мой точный код. – user1544522
Хорошо, но сообщение об ошибке не соответствует коду, поэтому оно запутывает. Сообщение об ошибке, которое я получил с '$ xml-> root': * Fatal error: вызов функции-члена' appendChild() 'on' null' * – har07