【问题标题】:Self-closing tags using createElement使用 createElement 的自闭合标签
【发布时间】:2011-09-24 14:13:28
【问题描述】:

我需要在 PHP 中使用 DOM 向 XML 文件添加一个自关闭标签,但我不知道如何,因为标准情况下,这个标签看起来像这样:

<tag></tag>

但它应该是这样的:

<tag/>

【问题讨论】:

    标签: php xml dom


    【解决方案1】:

    DOM 会自动为您完成这项工作

    $dom = new DOMDocument;
    $dom->appendChild($dom->createElement('foo'));
    echo $dom->saveXml();
    

    默认会给出

    <?xml version="1.0"?>
    <foo/>
    

    除非你这样做

    $dom = new DOMDocument;
    $dom->appendChild($dom->createElement('foo'));
    echo $dom->saveXml($dom, LIBXML_NOEMPTYTAG);
    

    然后会给出

    <?xml version="1.0" encoding="UTF-8"?>
    <foo></foo>
    

    【讨论】:

      【解决方案2】:

      只需将node 参数传递给DOMDocument::saveXML 以便仅输出特定节点,无需任何XML 声明:

      $doc = new \DOMDocument('1.0', 'UTF-8');
      $doc->preserveWhiteSpace = false;
      $doc->formatOutput = false;
      $node = $doc->createElement('foo');
      
      // Trimming the default carriage return char from output
      echo trim($doc->saveXML($node)); 
      

      会给

      <foo/>
      

      包含任何新行/回车结束字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-30
        • 1970-01-01
        相关资源
        最近更新 更多