PHP в XML-файле (или PHP-файл в формате XML) - PullRequest
0 голосов
/ 15 апреля 2011

У меня есть этот код (часть большего скрипта):

flashvars.xmlSource = "datasource.xml";   

datasource.xml выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<Object>
  <Contents>
    <Source="address" Title="title"></Source>
      <Description>&lt;h1&gt;New hot Features&lt;/h1&gt;&lt;p&gt;The all new Piecemaker comes with lots of new features, making it even more slick.&lt;/p&gt;&lt;p&gt;Just to mention a few - you can now specify unlimited transition styles, include your own SWF and Video files, add hyperlinks to images and info texts with all special characters.&lt;/p&gt;&lt;p&gt;We also impoved the navigation and the animation with animated shadows and pixel-perfect transitions.&lt;/p&gt;</Description>
(...)
  </Contents>
</Object> 

Я хочу динамически генерировать datasource.xml с помощью цикла foreach.

Я только что изменил расширение файла на .php, но это не так просто;)

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 22 апреля 2011

Смешно или нет, но попробуйте это:

  1. оставьте расширение вашего файла равным "xml"
  2. , где вы написали (...) напишите <? PHP CODE HERE ?>

Так что обрабатывайте его так, как если бы это был какой-нибудь html-файл.Я имею в виду:

<?xml version="1.0" encoding="utf-8"?>
<Object>
  <Contents>
    <Source="address" Title="title"></Source>
      <Description>&lt;h1&gt;New hot Features&lt;/h1&gt;&lt;p&gt;The all new Piecemaker comes with lots of new features, making it even more slick.&lt;/p&gt;&lt;p&gt;Just to mention a few - you can now specify unlimited transition styles, include your own SWF and Video files, add hyperlinks to images and info texts with all special characters.&lt;/p&gt;&lt;p&gt;We also impoved the navigation and the animation with animated shadows and pixel-perfect transitions.&lt;/p&gt;</Description>
<? create php loop here  ?>
  </Contents>
</Object>

Также обратите внимание,

эта строка

<Source="address" Title="title"></Source>

может быть неправильной (вы присвоили какое-то значение тэгу), попробуйте

<Source name="address" Title="title"></Source>

или что-то в этом роде.

2 голосов
/ 09 декабря 2012

Как я вижу, генерирование xml-файла с помощью php может быть выполнено таким образом - например, вы создадите файл datasource.xml, который будет не статическим xml-файлом, а xml-кодом с php-кодом, включенным в содержимое типа

<?php //php code to generate any xml code as Text
 // it can be whatever you need to generate   
  // for example
  $content="&lt;h1&gt;New hot Features&lt;/h1&gt;&lt;p&gt;The all new Piecemaker comes with lots of new features, making it even more slick.&lt;/p&gt;&lt;p&gt;Just to mention a few - you can now specify unlimited transition styles, include your own SWF and Video files, add hyperlinks to images and info texts with all special characters.&lt;/p&gt;&lt;p&gt;We also impoved the navigation and the animation with animated shadows and pixel-perfect transitions.&lt;/p&gt;";
  $output="<Description>".$content."</Description>";

header('Content-type: application/xml');// this is most important php command which says that all output text is XML  it must be called before any line of xml will be printed.
// So you need at first generate XML as text then call this command and echo contents of your xml file.

?>
<?xml version="1.0" encoding="utf-8"?>
<Object>
  <Contents>
    <Source name="address" Title="title"></Source>
      <? echo $output; ?>
  </Contents>
</Object> 

Чтобы позволить php выполнять код php внутри XML-файла, нам нужно добавить несколько директив в файл конфигурации хоста apache.В моем случае я добавил

<IfModule mod_php5.c>
  <FilesMatch "\.xml$">
        SetHandler application/x-httpd-php
</FilesMatch>

внутри моего файла конфигурации виртуального хоста, или вы можете поместить эту команду в файл .htaccess в вашем каталоге, если на вашем хосте разрешено переопределение этого параметраконфигурации.Что касается xml-, чтобы убедиться, что все в порядке, вы можете использовать http://validator.w3.org/ или http://www.w3schools.com/xml/xml_validator.asp для проверки xml, сгенерированного вашим скриптом.

0 голосов
/ 15 апреля 2011

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

function generateXML($input){
$xml = '<?xml version="1.0" encoding="utf-8"?><Object><Contents>
<Source="address" Title="title"></Source><Whateverelse>' . $input;
$xml .= '</Whateverelse></Contents></Object>';
return $xml;}

flashvars.xmlSource = generateXML("This is whatever else");

Если вам действительно нужно сгенерировать и сохранить правильно сформированный XML-документ или если ваш XML довольно сложный и вам нужно сгенерировать объект, а не просто использовать строку, вы можете использовать одну из библиотек PHP, чтобы сделать это следующим образом http://php.net/manual/en/book.simplexml.php

...