2013-10-09 3 views
1

Я пытаюсь взять данные формы (через _POST) и записать ее в документ с помощью SimpleXML. Это то, что я пробовал, и я не могу заставить его работать.Получить данные формы и записать ее в файл XML

<?php 
$title = $_POST['title']; 
$link = $_POST['link']; 
$description = $_POST['description']; 

$rss = new SimpleXMLElement($xmlstr); 
$rss->loadfile("feed.xml"); 

$item = $rss->channel->addChild('item'); 
$item->addChild('title', $title); 
$item->addChild('link', $link); 
$item->addChild('description', $description); 

echo $rss->asXML(); 

header("Location: /success.html"); 

    exit; 
?> 

Любая помощь или точка в правильном направлении были бы высоко оценены.

+0

Yo u не может 'echo' что-то, а затем использовать' header() '. – Shikiryu

+0

Всегда сообщайте, какую ошибку вы получаете при запуске кода. –

ответ

0

, а не с помощью SimpleXMLElement вы можете создавать XML непосредственно как этот

$xml = '<?xml version="1.0" encoding="utf-8"?>'; 
$xml .= '<item>'; 
$xml .= '<title>'.$title.'</title>'; 
$xml .= '<link>'.$title.'</link>'; 
$xml .= '<description>'.$title.'</description>'; 
$xml .= '</item>'; 
$xml_file = "feed.xml"; 
file_put_contents($xml_file,$xml); 

может это поможет вам

+0

Это. является. некрасиво. – Shikiryu

1

Вы используете функцию asXML() неправильно. Если вы хотите записать свой XML в файл, вы должны передать ему параметр имени файла. Проверьте SimpleXMLElement::asXML manual

поэтому код строки oututing XML должен быть изменен с

echo $rss->asXML(); 

в

$rss->asXML('myNewlyCreatedXML.xml'); 
0

Есть несколько проблем с вашим кодом

<?php 
$title = $_POST['title']; 
$link = $_POST['link']; 
$description = $_POST['description']; 

//$rss = new SimpleXMLElement($xmlstr); // need to have $xmlstr defined before you construct the simpleXML 
//$rss->loadfile("feed.xml"); 
//easier to just load the file when creating your XML object 
$rss = new SimpleXML("feed.xml",null,true) // url/path, options, is_url 
$item = $rss->channel->addChild('item'); 
$item->addChild('title', $title); 
$item->addChild('link', $link); 
$item->addChild('description', $description); 


//header("Location: /success.html"); 
//if you want to redirect you should put a timer on it and echo afterwards but by 
//this time if something went wrong there will be output already sent, 
//so you can't send more headers, i.e. the next line will cause an error 

header('refresh: 4; URL=/success.html'); 
echo $rss->asXML(); // you may want to output to a file, rather than the client 
// $rss->asXML('outfputfile.xml'); 
exit; 

?>

+0

Я получаю «Ошибка синтаксического анализа: ошибка синтаксиса, непредвиденная ошибка T_VARIABLE в /documentname.php в строке 10». Это потому, что в строке 9 нет точки с запятой? Потому что, когда я помещаю один из них, я получаю «Неустранимая ошибка: класс« SimpleXML »не найден в /documentname.php в строке 9' – user2012648

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