Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: X технологии > DOM. Переносы строк между узлами.


Автор: Flam 30.4.2010, 03:31
Добрый день! Или ночь )

Суть такова -


Добавляю узлы  <family:father rdf:resource="#Masha"/><family:husband rdf:resource="#Natasha"/><family:father rdf:resource="#Misha"/> в родительский узел <family:Person rdf:ID="Sasha"> с помощью appendChild(). 

получаю: 
<foaf:Person rdf:ID="Sasha">
 <family:father rdf:resource="#Masha"/><family:husband rdf:resource="#Natasha"/><family:father rdf:resource="#Misha"/></foaf:Person>


Как бы сделать так, чтоб каждый новый узелок на свою строчку добавлялся?! 

Пробовал вставлять
 $node_n = $dom->createTextNode("\n "); после каждого нового узла, да почему то на новую строку пренесся только закрывающий тег родительского =\

Сохраняю с помощью $dom->save('../ddd.xml')

вот эта http://]http://forum.vingrad.ru/topic-143656.html  мне не помогла к сожалению  -  в вордпаде такая же фигня,  а открывать в чем то и снова сохранять мне не вариант  =\

Автор: bars80080 30.4.2010, 13:39
попробуй добавить вручную

<family:father rdf:resource="#Masha"/>\n<family:husband rdf:resource="#Natasha"/>\n<family:father rdf:resource="#Misha"/>\n


а что, принципиально нужны узлы на новых строчках?

Автор: Flam 30.4.2010, 14:05
Как это вручную? прогнать всю онтологию на замену '/><'  на "/>\n<"  ?

а что, принципиально нужны узлы на новых строчках?
>>  ну вообще да, мне потом анализировать все надо,  нагляднее выходит  с переносами  =\
И как то не верится, что нет возможности изначально оформление нормальное делать (

PS:
Знатоки подключайтесь плз.. Если не у вас на этом форуме, то где еще тогда спрашивать совета?(

Автор: skyboy 30.4.2010, 14:29
как насчет http://www.php.net/manual/en/class.domdocument.php#domdocument.props.formatoutput?

Автор: Flam 30.4.2010, 15:08
Вот спасибо за наводку!  помогло добавление 
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;


после создания нового DOM'а
$dom = new DomDocument;
 smile 

Автор: mcTep 28.5.2010, 02:08
А у меня не получается :-(

test.xml
Код

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <item id="1">Hello World!</item>
    <item id="2">Привет МИР!</item>
</root>


Код

<?php
    header('Content-type: text/html; charset=utf-8');

    $doc = new DOMDocument();
    $doc->load('test.xml');
    $doc->formatOutput = true;
    $doc->preserveWhiteSpace = false;

    $item = $doc->getElementsByTagName('item')->item(0);

    $newDoc = new DOMDocument();
    $newDoc->loadXML('<a><a>Ho-ho-ho</a></a>');
    $item->appendChild($doc->importNode($newDoc->documentElement, true));

    print_r('<pre>'.htmlspecialchars($doc->saveXML()).'</pre>');
?>


Результат:
Код

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <item id="1">Hello World!<a><a>Ho-ho-ho</a></a></item>
    <item id="2">Привет МИР!</item>
</root>


Причем результат тот же самый при сохранении в файл.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)