PHP DOMDocument无法创建<img/>-tag

时间:2019-03-01 08:17:40

标签: php xml

我正在尝试在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);   

1 个答案:

答案 0 :(得分:1)

您的来源不完整。文档对象和$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>