php - 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);
解决方案
你的来源不完整。缺少文档对象和$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>
推荐阅读
- python - Python如何获取多行字符串的最后N行
- java - 如何将 db(oracle) 查询的结果存储为全局变量,以在 talend 的 RUN-IF 条件中使用?
- java - JSR Validation @Pattern 允许空值
- java - 如何使用独立 jar 从文件夹中读取文本文件的数量
- python - Opencv人脸检测网络摄像头不保存检测到的人脸
- java - 如何使用 log4j 创建多个自定义日志文件?
- python - (SubscriptionNotFound) 找不到订阅“订阅”
- object-detection - 将 .csv 文件转换为 yolo 暗网格式
- javascript - 在构建我的第一个 JS 测验时遇到问题
- firebase - Firebase 实时数据库规则 - 身份验证