Как сохранить форматирование simple xml?

mashc

Новичок
Задача в следующем:
При разборе XML файла есть тег описание:

PHP:
 <description>  
 Уменьшенный корпус  
 Верхняя дека - массив ели Энгельмана  
 Нижняя дека и обечайка - красное дерево  
 Мензура - 597 мм  
 Выпуклая нижняя дека  
 Цвет натурал  
 Фирменный чехол в комплекте 
  </description>
путем не хитрых преобразований его содержимое записывается в массив.
Вопрос - как сохранить исходное форматирование? Удаляется ли перевод строки при записи в массив?
 

WMix

герр M:)ller
Партнер клуба
PHP:
<?php

$string = <<<XML
<?xml version="1.0" encoding="utf-8"?>
 <description>  
 Уменьшенный корпус  
 Верхняя дека - массив ели Энгельмана  
 Нижняя дека и обечайка - красное дерево  
 Мензура - 597 мм  
 Выпуклая нижняя дека  
 Цвет натурал  
 Фирменный чехол в комплекте 
  </description>
XML;
                                                                       
                                          
$xml = simplexml_load_string($string);
print_r($xml);
Код:
$ php 1.php 
SimpleXMLElement Object
(
    [0] =>   
 Уменьшенный корпус  
 Верхняя дека - массив ели Энгельмана  
 Нижняя дека и обечайка - красное дерево  
 Мензура - 597 мм  
 Выпуклая нижняя дека  
 Цвет натурал  
 Фирменный чехол в комплекте 
  
)
 

mashc

Новичок
У меня почемуто не сохраняет формат
Код:
test4.xml


<?xml version="1.0" encoding="windows-1251"?>

				      <description>  
 Уменьшенный корпус  
 Верхняя дека - массив ели Энгельмана  
 Нижняя дека и обечайка - красное дерево  
 Мензура - 597 мм  
 Выпуклая нижняя дека  
 Цвет натурал  
 Фирменный чехол в комплекте 
  </description>
PHP:
<?php

$yml = simplexml_load_file('test4.xml');
 print_r($yml);
 echo "</br></br></br>" ;
?>
Выводит одной строкой
SimpleXMLElement Object ( [0] => Уменьшенный корпус Верхняя дека - массив ели Энгельмана Нижняя дека и обечайка - красное дерево Мензура - 597 мм Выпуклая нижняя дека Цвет натурал Фирменный чехол в комплекте )
 

mashc

Новичок
Спасибо за подсазки, понял в чём ощибка была.
Для решения своей задачи также помогла функция nl2br(), которая заменила переводы строк на тег
Код:
</BR>
 

claygod

Новичок
Тоже столкнулся с проблемой форматирования после изменения файла xml, может кто-то скажет, в чём дело?
Исходные данные: РНР5.2 под Денвером, файл до редактирования:

Код:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<groups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <group id="gr0" owner="auth0" rate="2000003">Группа фанатов</group>
    <group id="gr1" owner="auth1" rate="2000011">Тихий омут</group>
    <group id="gr2" owner="auth2" rate="2000003">Так и сяк</group>
    <group id="gr3" owner="auth3" rate="2000007">Полезные советы</group>
</groups>
Обрабатывающий скрипт:

PHP:
$xml = new DOMDocument();
$xml->preserveWhitespace = false;
$xml->formatOutput = true;
$xml->load('data/groups.xml');
$xpath = new DOMXPath($xml);
// куда узел добавляем
$kuda = $xpath->query('/groups')->item(0);
// что добавляем
$gr = $xml->createElement('group', 'bla-bla-bla'); // название узла и содержимое
// добавляем узел
$newnode = $kuda->appendChild($gr);
// сохраняем
//file_put_contents ('data/groups.xml', $xml->saveXML()); // альтернатива
$xml->save("data/groups.xml");
После редактирования:

Код:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<groups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <group id="gr0" owner="auth0" rate="2000003">Группа фанатов</group>
    <group id="gr1" owner="auth1" rate="2000011">Тихий омут</group>
    <group id="gr2" owner="auth2" rate="2000003">Так и сяк</group>
    <group id="gr3" owner="auth3" rate="2000007">Полезные советы</group>
<group>bla-bla-bla</group></groups>
Надеялся, что $xml->formatOutput = true; решит проблему, но нет.
Прошу подсказки.
 
Сверху