Добрый день. Облазил кучу форумов перед тем как создать тему, но все найденные советы безрезультатны. Есть вот такой код Код (Text): <?php $f=file_get_contents('xml.xml'); $film=new SimpleXMLElement($f); $actor=$film->addChild('actors'); $actors=['roma','petya','vasya']; foreach($actors as $row) { $actor->addChild('actor',$row)." <br/>"; } $film->saveXML('xml.xml'); Цель ясна-каждый ребенок с новой строки в xml файле. По факту я получаю: Код (Text): <?xml version="1.0" encoding="UTF-8"?> <film> <actors><actor>roma</actor><actor>petya</actor><actor>vasya</actor></actors></film> Скажу сразу вместо <br> пробовал \n(так как сижу под линуксом), html сущности и т.п.
Вот что, по вашему, делает эта строка? Своими словами опишите А собственно, нахрена это надо? Любая читалка XML и так поймёт, кто чей ребёнок.
xml файлы обычно читают/обрабатывают программно. и программе пофиг на перенос строк. а если вы хотите посмотреть xml - лично, и чтоб было красиво, есть куча редакторов/просмотрщиков, которые могут красиво его показать, отформатировать, подкрасить и т.д.
Почти. Эта строка вызывает метод addChild объекта XML, который добавляет узел (действительно), и возвращает добавленный элемент в виде объекта SimpleXMLElement. Потом то, что он вернул, вы склеиваете с константой "<br />". PHP выполняет эту операцию, действительно, для чего преобразует объект в строку. Далее, результат этой операции просто выбрасывается в мусор, поскольку вы ничему его не присваиваете. Поскольку php произошёл от C, а не от Pascal, то ему пофиг, что вы с результатом операции сделаете. По поводу проблемы - runcore верно написал, программам, обрабатывающим ваш XML, пофиг на строки. А для себя - ну хоть в браузере хром откройте свою XML, будет всё оооооочень красиво.
не решить. CDATA - это если бы вам внутри узла надо было сделать несколько строк Код (Text): <?xml version="1.0" encoding="UTF-8"?> <film> <actors><actor><![CDATA[ Один очень глупый актёр roma ]]> </actor><actor>petya</actor><actor>vasya</actor></actors></film> Тогда внутри CDATA парсер XML не будет преобразовывать, грубо говоря, перевод строки в пробел, а оставит точно как есть. Но, поскольку , его можно применить только к содержимому одного узла. А язык бы вам подучить не помешало, чтоб людей глупостями такими не смешить, как в вашем коде...
Код (PHP): $dom->formatOutput=true; Зарешает! Код (PHP): $dom=new DOMDocument('1.0', 'utf-8'); $dom->formatOutput=true; $actors=$dom->createElement('actors'); $actors=$dom->appendChild($actors); $array=['roma','petya','vasya']; foreach($array as $value) { $value=$dom->createElement('actor',$value); $actors->appendChild($value); } $dom->save('xml.xml'); Сохранение в документ: Код (PHP): <?xml version="1.0" encoding="utf-8"?> <actors> <actor>roma</actor> <actor>petya</actor> <actor>vasya</actor> </actors>