Не могу понять, как сохранить новый выданный документ с помощью DOM - PullRequest
1 голос
/ 21 июня 2011

С помощью следующего скрипта я переименовываю элементы через XSLT в XML и вывожу результат. Однако я хочу сохранить его в новом файле в своем браузере, но единственное, что мне удалось сделать, - это сохранить входной XML.

<?php

// create an XSLT processor and load the stylesheet as a DOM 
$xproc = new XsltProcessor();
$xslt = new DomDocument;
$xslt->load('stylesheet.xslt');    // this contains the code from above
$xproc->importStylesheet($xslt);


// your DOM or the source XML (copied from your question)
$xml = '<document><item><title>Hide your heart</title><quantity>1</quantity><price>9.90</price></item></document>';
$dom = new DomDocument;
$dom->loadXML($xml);

// do the transformation
if ($xml_output = $xproc->transformToXML($dom)) {
    echo $xml_output;
} else {
    trigger_error('Oops, XSLT transformation failed!', E_USER_ERROR);
} 

?>

Я использовал

echo $dom->saveXML();
$dom->save("write.xml")

и заменил его на xml_output, не повезло.

1 Ответ

1 голос
/ 21 июня 2011
if ($xml_output = $xproc->transformToDoc($dom)) {
  $xml_output->save('write.xml');
} else {
  trigger_error('Oops, XSLT transformation failed!', E_USER_ERROR);
}

transformToXML() возвращает строку вместо DOMDocument. Вы также можете записать строку в файл, используя общие функции обработки файлов

if ($xml_output = $xproc->transformToXML($dom)) {
  echo $xml_output;
  file_put_contents('write.xml', $xml_output);
} else {
  trigger_error('Oops, XSLT transformation failed!', E_USER_ERROR);
} 

Обновление: только что нашел третий метод :) В зависимости от того, чего вы хотите добиться, именно тот, который вы ищете

$xproc->transformToURI($doc, 'write.xml');

http://php.net/xsltprocessor.transformtouri

Вы можете найти подпись всего класса в руководстве: http://php.net/class.xsltprocessor

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