首页 > 解决方案 > PHP DOMDocument 无法创建-tag

问题描述

我正在尝试在 PHP 中使用 DOMDocument 来创建一个包含格式如下的元素的 XML 文档:

    <image>
        <url>
              http://webpage.com/images/img.jpg
        </url>
    </image>

问题是它被转换成这个:

    <img>
    <url><img></url>

它是否与保留的图像标记名称有关,因为它默认为普通的 HTML 标记。

我当前的代码片段:

    $frag = $domtree->createDocumentFragment();
    $frag->appendXML('<image>\n<url></url></image>');
    $listing->appendChild($frag);   

标签: phpxml

解决方案


你的来源不完整。缺少文档对象和$listing节点的创建,这里没有输出。修复它工作正常:

$document = new DOMDocument();

$fragment = $document->createDocumentFragment();
$fragment->appendXML('<image>\n<url>http://webpage.com/images/img.jpg</url></image>');
$document->appendChild($fragment);

echo $document->saveXML();

输出:

<?xml version="1.0"?> 
<image>\n<url>http://webpage.com/images/img.jpg</url></image>

PHP 不会识别\n为单引号字符串中的换行符。它只支持双引号字符串。

从片段创建 XML 很好,但大多数时候您可能希望直接创建节点:

$document = new DOMDocument();
$document->appendChild($image = $document->createElement('image'));
$image->appendChild($url = $document->createElement('url'));
$url->appendChild($document->createTextNode('http://webpage.com/images/img.jpg'));

echo $document->saveXML();

输出:

<?xml version="1.0"?> 
<image><url>http://webpage.com/images/img.jpg</url></image>

推荐阅读