【问题标题】:DOMDocument: the root element gets just a single tag, not bothDOMDocument:根元素只获得一个标签,而不是两者
【发布时间】:2015-08-24 07:58:12
【问题描述】:

以下代码应使用带有根元素的 DOMDocument 创建一个 XML 文件:

$doc = new DOMDocument('1.0', 'utf-8');
        $doc->formatOutput = true;

        $root = $doc->createElement('gallery');
        $doc->appendChild($root);

        $doc->save($filename);

但我只得到一个标记元素(带有斜杠“/”),而不是

<gallery> </gallery>

我成功了

<gallery> A content </gallery> 

如果我将 createElement 与第二个参数 ( $doc->createElement('gallery', 'A content') 一起使用,但由于它是根元素,我不需要在其中放置内容。

如何解决?

谢谢

【问题讨论】:

    标签: php xml root


    【解决方案1】:

    &lt;gallery /&gt; 等价于&lt;gallery&gt;&lt;/gallery&gt;。如果您要向“单个标签元素”添加内容,它将使用开始和结束标签以及两者之间的内容呈现。

    【讨论】:

    • XML 的神秘世界。非常感谢!
    【解决方案2】:

    &lt;gallery/&gt; 是空标签的短序列化形式。如果加载到 DOM 中,它将产生相同的节点。所以大多数时候它是无关紧要的,你可以使用简短的空表单。

    但是,您可以要求 DOM 以长格式保存空标签:

    $document = new DOMDocument('1.0', 'utf-8');
    $document->formatOutput = true;
    
    $root = $document->appendChild(
      $document->createElement('gallery')
    );
    
    // echo $document->save($filename, LIBXML_NOEMPTYTAG);
    echo $document->saveXml(null, LIBXML_NOEMPTYTAG);
    

    输出:

    <?xml version="1.0" encoding="utf-8"?>
    <gallery></gallery>
    

    【讨论】:

      猜你喜欢
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多