代码之家  ›  专栏  ›  技术社区  ›  mko

当输出到xml时,SimpleXML::addChild()无法添加换行符

  •  5
  • mko  · 技术社区  · 15 年前
    <?xml version="1.0" encoding="utf-8"?><items>
    <item><title>title3</title><desc>This is some desc3</desc></item></items>
    

    使用asXML()输出时,每个节点元素之间没有换行符?

    <?xml version="1.0" encoding="utf-8"?>
    <items>
    <item>
    <title>title3</title>
    <desc>This is some desc3</desc>
    </item>
    </items>
    
    1 回复  |  直到 13 年前
        1
  •  8
  •   Community Mohan Dere    9 年前

    这个 扩展名仅限于格式化输出,它是姐妹扩展名, DOMDocument 支持输出格式。示例中的XML字符串并利用 DOMDocument::$preserveWhiteSpace DOMDocument::$formatOutput

    $doc = new DOMDocument();
    
    $doc->preserveWhiteSpace = false;
    $doc->formatOutput = true;
    
    $doc->loadXML($string);
    
    echo $doc->saveXML();
    

    这将输出一个缩进良好的XML,其中包含您要求的换行符:

    <?xml version="1.0" encoding="utf-8"?>
    <items>
      <item>
        <title>title3</title>
        <desc>This is some desc3</desc>
      </item>
      <empty/>
    </items>
    

    如果您还需要操纵缩进,可以使用正则表达式,这些表达式在相关问答中已概述: Converting indentation with preg_replace (no callback) .

    如果不想使用该方法,还可以从SimpleXML切换到其他方法,然后切换到XMLWriter,后者提供了设置缩进的方法( XMLWriter::setIndent )打印的XML。您需要找到XML模型的临时表示形式来编写它 XMLWriter

    推荐文章