Я хотел бы добавить новый узел в файл XML, хранящийся на диске. Эта часть в порядке, я решил это:
$xml = new DOMDocument("1.0", "ISO-8859-1");
$xml->preserveWhiteSpace = FALSE;
$xml->formatOutput = TRUE;
$xml->load($fichier);
...
$rootTag->insertBefore($annonce,$rootTag->firstChild);
$xml->save($fichier);
Исходный XML:
<genevecrb>
<annonce id="149">
<flagplus/>
<entete>GENEVE</entete>
<nouveau>1</nouveau>
<description>EN EXCLUSIVITÉ SUPERBE RESTAURANT EN SA</description>
<couleur>R</couleur>
<detail>90 places intérieur et TERRASSE privative de 80 places<br/>
CA 1'500'000.--<br/>
PV sur demande et sur rdv. Possibilité de crédit si 70% fonds propres (env. 530'000.--)<br/>
Hyper opérationnel et entièrement refait à neuf. Bail 10 années renouvelable de 10 années.<br/>
Loyer 5'100.-- avec parkings et chauffage.<br/>
Dossier confidentiel.
</detail>
<autre/>
<contact>Pour tout renseignement nous contacter</contact>
<vente>REMIS</vente>
</annonce>
После добавления нового узла:
<genevecrb><annonce id="150"><flagplus/><entete>Ceci est un message</entete><nouveau/><description>Le message de description</description><couleur/><detail>Le bla bla bla</detail><autre>Autre r&eacute;sine</autre><contact>Contact</contact><vente>Vente</vente></annonce>
<annonce id="149">
<flagplus/>
<entete>GENEVE</entete>
<nouveau>1</nouveau>
<description>EN EXCLUSIVITÉ SUPERBE RESTAURANT EN SA</description>
<couleur>R</couleur>
<detail>90 places intérieur et TERRASSE privative de 80 places<br/>
CA 1'500'000.--<br/>
PV sur demande et sur rdv. Possibilité de crédit si 70% fonds propres (env. 530'000.--)<br/>
Hyper opérationnel et entièrement refait à neuf. Bail 10 années renouvelable de 10 années.<br/>
Loyer 5'100.-- avec parkings et chauffage.<br/>
Dossier confidentiel.
</detail>
<autre/>
<contact>Pour tout renseignement nous contacter</contact>
<vente>REMIS</vente>
</annonce>
Новый узел является встроенным и не имеет отступов.
PreserveWhiteSpace и formatOutput не работают.
Как я могу сделать отступ? Любая идея?
XML — это абстракция графа. В зависимости от используемого вами API, пробелы, такие как вкладки и переводы строк, могут фактически рассматриваться как TextNode
s. Если вы смешиваете свой пробел с элементами, это имеет значение в XML, но некоторые анализаторы игнорируют пробел, если он не является частью текста. Это создает впечатление, что между элементами нет текста.
Тем не менее, ваш отступ происходит от дополнительных узлов, которые вы не добавляете — и вы не должны, на самом деле. Используйте функцию «красивая печать» в вашей библиотеке, чтобы сохранить документ, или запустите средство форматирования для файла после его сохранения.
Других решений пока нет …