有时,在将 XML 解析为 PHP 的 DOMDocument 并使用 输出时formatOutput=true
,会在不需要的 XML 标记之间引入空格。
例如:
<td><i>lorem</i><b>ipsum</b></td>
变成了这个,这在两个单词之间添加了空格:
<td>
<i>lorem</i>
<b>ipsum</b>
</td>
解决此问题的一种方法是在元素末尾手动添加一个零宽度空格,以便解析器将元素的内容视为混合内容:
<td><i>lorem</i><b>ipsum</b>​</td>
还有一个xml:space="preserve"
属性,它应该使解析器将所有空白视为重要的,但在这种情况下它似乎没有任何效果:
<?php
$dom = new DOMDocument;
$dom->loadXML('<td xml:space="preserve"><i>lorem</i><b>ipsum</b></td>');
$dom->formatOutput = true;
print $dom->saveXML();
/* Output:
<?xml version="1.0"?>
<td xml:space="preserve">
<i>lorem</i>
<b>ipsum</b>
</td>
*/
有没有办法(可能使用 DTD)告诉 XML 解析器/编写器某些标签(<i>
在<b>
这种情况下)表示内联元素并且它们之间的空白很重要,或者手动将特定元素标记为包含混合内容?