2013-12-11 3 views
0

Я пытаюсь создать простой процесс подачи, который сохранит вход пользователя в XML-документ, поскольку это очень временный (и учебный предмет). Сначала он создавал новый элемент для «приложений», когда я хотел, чтобы он добавлялся к этому элементу, поэтому я прокомментировал его и попытался получить тег элементов.DOM XML, создающий новый элемент вместо добавления

<?php 
echo $_GET['position']; 
echo $_GET['name']; 
echo $_GET['email']; 
echo $_GET['minecraft-name']; 
echo $_GET['age']; 
echo $_GET['message']; 


$doc = new DOMDocument(); 
$doc->load('dump.xml'); 
$doc->formatOutput = true; 

$r = $doc->getElementsByTagName("applications"); 
//$r = $doc->createElement("applications"); 
//$doc->appendChild($r); 

$s = $doc->createElement($_GET['position']); 

$name = $doc->createElement("name"); 
$name->appendChild(
    $doc->createTextNode($_GET['name']) 
); 
$s->appendChild($name); 

$email = $doc->createElement("email"); 
$email->appendChild(
    $doc->createTextNode($_GET['email']) 
); 
$s->appendChild($email); 

$mcname = $doc->createElement("minecraft-name"); 
$mcname->appendChild(
    $doc->createTextNode($_GET['minecraft-name']) 
); 
$s->appendChild($mcname); 

$age = $doc->createElement("age"); 
$age->appendChild(
    $doc->createTextNode($_GET['age']) 
); 
$s->appendChild($age); 

$message = $doc->createElement("message"); 
$message->appendChild(
    $doc->createTextNode($_GET['message']) 
); 
$s->appendChild($message); 

$r->appendChild($s); 


echo $doc->save("dump.xml"); 

выводит ошибку "Вызов неопределенного метода DOMNodeList :: AppendChild()".

ответ

0

Я думаю, что вместо

$r = $doc->getElementsByTagName("applications"); 

вы хотите

$r = $doc->getElementsByTagName("applications")->item(0); 
+0

Спасибо, что решили. Я забыл про последнюю часть. Для каких-либо новых созданных элементов не существует. 'formatOutput' также является истинным – BizBink

+0

Кто-то еще должен помочь в форматировании вывода, я не знаком с этой частью PHP DOM API. –

Смежные вопросы