如何在PHP中生成这种格式的xml A. B

如何在PHP中生成这种格式的xml A. B,php,xml,Php,Xml,我的项目需要以上述方式生成xml。 我正在使用php库DOMDocument来生成这个 如果我使用formatOutput=true,那么 <resource> <string>a</string><--comment here--> <string>b</string> </resource> A. B ,如果不是,那就是 ab 这让我感到困惑,任何帮助都将不胜感激。除了启用/禁用DOM之外,您无法控

我的项目需要以上述方式生成xml。 我正在使用php库DOMDocument来生成这个

如果我使用formatOutput=true,那么

<resource>
<string>a</string><--comment here-->
<string>b</string>
</resource>

A.
B
,如果不是,那就是

ab

这让我感到困惑,任何帮助都将不胜感激。

除了启用/禁用DOM之外,您无法控制DOM如何格式化输出。您需要将XML作为字符串进行后处理,例如,通过
preg\u replace

<resource>
<string>a</string>
<--comment-->
<string>b</string>
</resource>
$dom=新的DOMDocument(“1.0”、“utf-8”);
$root=$dom->appendChild($dom->createElement(“资源”);
$root->appendChild($dom->createElement(“string”,“a”));
$root->appendChild($dom->createComment(“此处注释”);
$root->appendChild($dom->createElement(“string”,“b”));
$dom->formatOutput=true;

echo preg__replace('#\s+注释与每个字符串标记都密切相关。经理读取并剪切行会很好。如果手动添加空白节点-:-),则是可能的@ThW是,但这很难看。但是我会把它添加到答案中。是的,这并不有趣,但是你可以用这种方式构建自己的格式化程序。为什么不把注释放在元素节点之前呢?
$dom = new DOMDocument("1.0", "utf-8");
$root = $dom->appendChild($dom->createElement("resource"));
$root->appendChild($dom->createElement("string", "a"));
$root->appendChild($dom->createComment("comment here"));
$root->appendChild($dom->createElement("string", "b"));

$dom->formatOutput = true;
echo preg_replace('#</string>\s+<!--#', "</string><!--", $dom->saveXML());