PHP: отображение объекта Dom и создание XML-файла - PullRequest
2 голосов
/ 21 мая 2010
<?php                                               

  $books = array();
  $books [] = array(
  'title' => 'PHP Hacks',
  'author' => 'Jack Herrington',
  'publisher' => "O'Reilly"     
  );                            
  $books [] = array(            
  'title' => 'Podcasting Hacks',
  'author' => 'Jack Herrington',
  'publisher' => "O'Reilly"     
  );                            

  $doc = new DOMDocument();     
  $doc->formatOutput = true;    
  $r = $doc->createElement( "books" );
  $doc->appendChild( $r );            
  foreach( $books as $book )          
  {                                   
  $b = $doc->createElement( "book" ); 

  $author = $doc->createElement( "author" );
  $author->appendChild(
  $doc->createTextNode( $book['author'] )
  );
  #$author->appendChild( $doc->createTextNode( 'pavunkumar'));
  $new = $doc->createElement("Developer");
  $a=$doc->createTextNode('I am developer ' );
  $new->appendChild($a);
  $b->appendChild( $author );
  $b->appendChild($new);
  $b->appendChild($new);
  $title = $doc->createElement( "title" );
  $title->appendChild(
  $doc->createTextNode( $book['title'] )
  );
  $b->appendChild( $title );
  $publisher = $doc->createElement( "publisher" );
  $publisher->appendChild(
  $doc->createTextNode( $book['publisher'] )
  );
  $b->appendChild( $publisher );

  $r->appendChild( $b );
  }
  echo $doc->SaveXml() ;
  ?>

Когда я запускаю этот код в командной строке. Я получаю следующие вещи

<?xml version="1.0"?>
<books>
  <book>
    <author>Jack Herrington</author>
    <Developer>I am developer </Developer>
    <title>PHP Hacks</title>
    <publisher>O'Reilly</publisher>
  </book>
  <book>
    <author>Jack Herrington</author>
    <Developer>I am developer </Developer>
    <title>Podcasting Hacks</title>
    <publisher>O'Reilly</publisher>
  </book>
</books>

Когда я запускаю код в веб-браузере, он дает мне следующие вещи

Jack Herrington  I am developer  O'Reilly    Jack Herrington  I am developer  O'Reilly  

Я хочу, чтобы вывод выше был похож на вывод командной строки. И еще одна вещь: вместо отображения, как я могу создать XML-файл, используя $ doc Dom-объект.

Ответы [ 3 ]

1 голос
/ 21 мая 2010

Возможно, я не прав, но попробуйте отправить заголовок так:

Header("Content-Type: text/xml");

или

Header("Content-Type: text/plain");

для достижения соответствующих результатов. (Конечно, прежде чем запустить $doc->saveXML();.

1 голос
/ 21 мая 2010

Преобразуйте <и> в объекты с htmlspecialchars (http://ua.php.net/manual/en/function.htmlspecialchars.php), и браузер не будет анализировать его как html:

echo htmlspecialchars($doc->SaveXml());
0 голосов
/ 21 мая 2010

Это потому, что вы выводите XML-код в файл PHP (переведенный в HTML). Проверьте ваш исходный код, и вы увидите желаемый результат. Если вы хотите получить то же самое, что и в командной строке, вам придется сохранить вывод в новый XML-файл.

Используйте fopen для создания нового файла XML.

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