Есть ли простой способ сделать это в PHP? Как вы берете простой текст, отформатированный как XML, из формы textarea и PHP принимает его как XML? Я могу узнать, как пройтись по дереву после того, как это объект XML.
Только что попробовал технику richsage на этом примере xml:
<?xml version="1.0"?>
<videocollection>
<title id="1">Tootsie</title>
<genre>comedy</genre>
<year>1982</year>
<language>English</language>
<cast>Dustin Hoffman</cast>
<cast>Jessica Lang</cast>
<cast>Teri Gar</cast>
<cast>Sydney Pollak</cast>
<crew>
<director>Sydney Pollak</director>
</crew>
<title id="2">Jurassic Park</title>
<genre>science fiction</genre>
<year>1993</year>
<language>English</language>
<cast>Sam Neil</cast>
<cast>Laura Dern</cast>
<cast>Jeff Goldblum</cast>
<crew>
<director>Steven Spielberg</director>
</crew>
<title id="3">Mission Impossible</title>
<genre>action</genre>
<year>1996</year>
<language>English</language>
<cast>Tom Cruise</cast>
<cast>Jon Voight</cast>
<cast>Emmanuelle Beart</cast>
<cast>Jean Reno</cast>
<crew>
<director>Brian de Palma</director>
</crew>
</videocollection>
Вот мой код:
<html>
<head><title></title></head>
<body>
</body>
<?php
echo $_SERVER['PHP_SELF'];
$in_xml=$_POST['in_xml'];
if ($in_xml) {
print "We got it!...";// . $in_xml;
$doc = new DOMDocument();
$doc->loadXML( $in_xml);
} else {
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<textarea name="in_xml" cols="40" rows="10">
Enter your comment here
</textarea>
<input type="submit" value="Submit">
<?php
}
?>
</html>
Получил целую кучу предупреждений:
Предупреждение: DOMDocument :: loadXML () [domdocument.loadxml]: строка не начала ожидать или «в сущности», строка: 1 в /Library/WebServer/Documents/sandbox/parse_xml/index.php в строке 12
Предупреждение: DOMDocument :: loadXML () [domdocument.loadxml]: неверное объявление, ожидающее версию в Entity, строка: 1 в /Library/WebServer/Documents/sandbox/parse_xml/index.php в строке 12
Предупреждение: DOMDocument :: loadXML () [domdocument.loadxml]: здесь необходимо заполнить пробел в Entity, строка: 1 в /Library/WebServer/Documents/sandbox/parse_xml/index.php в строке 12
Предупреждение: DOMDocument :: loadXML () [domdocument.loadxml]: синтаксический анализ объявления XML: '?>' Ожидается в Entity, строка: 1 в /Library/WebServer/Documents/sandbox/parse_xml/index.php в строке 12
Предупреждение: DOMDocument :: loadXML () [domdocument.loadxml]: AttValue: "или 'ожидается в Entity, строка: 4 в /Library/WebServer/Documents/sandbox/parse_xml/index.php в строке 12
Предупреждение: DOMDocument :: loadXML () [domdocument.loadxml]: ошибка создания атрибутов в Entity, строка: 4 в /Library/WebServer/Documents/sandbox/parse_xml/index.php в строке 12
Предупреждение: DOMDocument :: loadXML () [domdocument.loadxml]: не удалось найти конец строки заголовка начального тега 4 в объекте, строка: 4 в /Library/WebServer/Documents/sandbox/parse_xml/index.php в строка 12
Предупреждение: DOMDocument :: loadXML () [domdocument.loadxml]: Несоответствие открывающего и завершающего тега: строка видеоколлекции 3 и заголовок в объекте, строка: 4 в /Library/WebServer/Documents/sandbox/parse_xml/index.php on строка 12
Предупреждение: DOMDocument :: loadXML () [domdocument.loadxml]: дополнительное содержимое в конце документа в Entity, строка: 5 в /Library/WebServer/Documents/sandbox/parse_xml/index.php в строке 12