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