XML текст в форме textarea ... как принять это как XML в PHP? - PullRequest
0 голосов
/ 26 декабря 2009

Есть ли простой способ сделать это в 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

1 Ответ

3 голосов
/ 26 декабря 2009

Вы можете использовать DOMDocument класс в PHP:

$doc = new DOMDocument();
$doc->loadXML($yourXML);

где $ yourXML - это данные XML, которые вы получили из своей формы (например, через $ _POST или аналогичные). Получив это, вы можете ходить по объекту, как вы описали, или использовать XPath или аналогичный для навигации и выбора элементов по вашему желанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...