Раньше было возможно document.open(mimetype)
на iframe обратно в Netscape, но современные браузеры не поддерживают это (и в любом случае Netscape никогда не поддерживал XML).
Во многих браузерах вы можете установить для src
iframe значение данных URI , например: data:text/xml,%3Celement%3Ehello%3C/element%3E
, если документ не слишком длинный. Это не работает в IE, хотя. Таким образом, вам потребуется как минимум план резервного копирования для возврата на сервер:
<?php
header('Content-Type: text/xml');
echo($_REQUEST('xml'));
?>
Тогда, если XML был достаточно коротким, чтобы поместиться в URI, вы можете установить его src через:
iframe.src= 'http://www.example.com/echoxml.php?xml='+encodeURIComponent(xml);
Если XML может быть длинным, вам нужно использовать запрос POST, что означает отправку формы:
var idoc= iframe.contentDocument || iframe.contentWindow.document; // IE compat
idoc.open();
idoc.write('<form method="post" action="http://www.example.com/echoxml.php">');
idoc.write(' <textarea name="xml"></textarea>');
idoc.write('</form>');
idoc.close();
idoc.getElementsByTagName('textarea')[0].value= xml;
idoc.getElementsByTagName('form')[0].submit();
Это все стоит? Если вы не используете XSL, то неструктурированное представление XML, которое вы получите в большинстве браузеров, вероятно, будет весьма скудным. В старых / более простых браузерах, которые вообще не отображают XML, вам будет предложено загрузить файл XML.
И опасно позволять кому-либо вставлять контент XML в ваш контекст безопасности. например. если бы они сделали возвратный документ, содержащий содержимое сценариев XHTML, вы были бы уязвимы для атак с использованием межсайтовых сценариев.