如何在PHP中正确添加换行符到XML字符串?

时间:2010-05-07 01:22:03

标签: php xml newline

我有一些xml,我在一个类似的函数中手动构造:

$xml = "<myxml>";
$xml .= "<items>";
$xml .= "<item1>blah</item1>";
$xml .= "</items>";
$xml .= "</myxml>";

当我输出字符串时,我希望新行存在。如何在不影响接受xml的Web服务的情况下将其添加到字符串中? XML中的换行符是否重要?

5 个答案:

答案 0 :(得分:9)

新行不是必需的,但您可以使用PHP_EOL常量,这是查找新行字符的跨平台方式。即。

$xml = "<myxml>".PHP_EOL;

答案 1 :(得分:2)

您可以通过$xml = "<myxml>\n";添加它们,但是,根本不需要它们,因为任何XML解析器都会忽略它们。

答案 2 :(得分:2)

如果您不必担心不同类型的换行符(“\ 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 .../>

答案 3 :(得分:1)

不,它们在文本节点之外是无关紧要的。 IE,将尊重item1节点中的换行符

答案 4 :(得分:1)

你可以像这样写你的XML,

$xml = <<<XML
<myxml>
 ...
</myxml>
XML;