【问题标题】:How to write on XML file an indented text (php)如何在 XML 文件上写入缩进文本(php)
【发布时间】:2016-06-21 08:35:04
【问题描述】:

我想为存储在磁盘上的 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&lt;br/&gt;
                CA 1'500'000.--&lt;br/&gt;
                PV sur demande et sur rdv. Possibilité de crédit si 70% fonds propres (env. 530'000.--)&lt;br/&gt;
                Hyper opérationnel et entièrement refait à neuf. Bail 10 années renouvelable de 10 années.&lt;br/&gt;
                Loyer 5'100.-- avec parkings et chauffage.&lt;br/&gt;
                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&amp;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&lt;br/&gt;
                CA 1'500'000.--&lt;br/&gt;
                PV sur demande et sur rdv. Possibilité de crédit si 70% fonds propres (env. 530'000.--)&lt;br/&gt;
                Hyper opérationnel et entièrement refait à neuf. Bail 10 années renouvelable de 10 années.&lt;br/&gt;
                Loyer 5'100.-- avec parkings et chauffage.&lt;br/&gt;
                Dossier confidentiel.
        </detail>
        <autre/>
        <contact>Pour tout renseignement nous contacter</contact>
        <vente>REMIS</vente>
</annonce>

新节点是内联的并且没有缩进。 PreserveWhiteSpace 和 formatOutput 不起作用。 我怎么能缩进呢?有什么想法吗?

【问题讨论】:

    标签: php xml dom indentation


    【解决方案1】:

    XML 是图形的抽象。根据您使用的 API,制表符和换行符之类的空格实际上可以视为TextNodes。如果将空格与元素混合,这在 XML 中是有意义的,但是如果空格不是文本的一部分,则某些解析器会忽略空格。这会造成元素之间没有文字的印象。

    也就是说,您的缩进来自您没有添加的其他节点 - 实际上您不应该添加。使用库的“漂亮打印”功能保存文档,或在保存文件后对文件运行格式化程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      • 2016-08-06
      • 2011-05-17
      • 2011-01-15
      • 2020-06-30
      • 1970-01-01
      相关资源
      最近更新 更多