我有一些手动构建的 XML,其格式类似于以下代码:
$xml = "<myxml>";
$xml .= "<items>";
$xml .= "<item1>blah</item1>";
$xml .= "</items>";
$xml .= "</myxml>";
当我输出字符串时,我希望换行符保留。如何在不影响接受XML的Web服务的情况下向字符串中添加换行符? XML中的换行符是否重要?
新行不是必需的,但你可以使用PHP_EOL常量,该常量是一个跨平台的方法来查找换行符。例如:
$xml = "<myxml>".PHP_EOL;
如果您不必担心不同类型的换行符("\n","\r\n","\r"),您可以简单地使用多行字符串字面量,例如
$xml = '<myxml>
<items>
<item1>blah</item1>
</items>
</myxml>';
$xml = <<< EOT
<myxml>
<items>
<item1>blah</item1>
</items>
</myxml>
EOT;
请记住,这些文档并不一定相当于
<myxml><items><item1>blah</item1></items></myxml>
http://www.w3.org/TR/REC-xml/指出:
2.10 空格处理
[...]
XML处理器 必须 总是将文档中不是标记的所有字符传递给应用程序。验证XML处理器 还必须告知应用程序哪些字符构成元素内容中的空白。
一个名为xml:space的特殊属性可以附加到元素上,以表示在该元素中,应用程序应保留空格。
空格可以被标记为显著或不显著,消费者可以更多或更少地选择将它们处理为显著或不显著,例如通过使用 <xsl:strip-space .../>
。
$xml = "<myxml>\n";
来添加它们,但是实际上它们并不必要,因为任何XML解析器都会忽略它们。您可以这样编写您的XML:
$xml = <<<XML
<myxml>
...
</myxml>
XML;
不,它们在文本节点之外是无关紧要的。也就是说,在item1节点内的换行符将被保留。