需要在每个xml元素后添加回车符(php)

时间:2012-03-27 11:12:36

标签: php xml

我有一个通过https发送的文件,我正在使用php脚本处理。

使用以下方式接受数据:

$data = file_get_contents('php://input')

如果写入文件,则将其写为一行。

由于我们的内部系统(IBM power 7),我告诉I.T我需要在每个xml元素之后添加一个回车符。

因此该文件当前在编辑器中打开为:

<root><element1><element2></element2></element1></root>

我需要它:

<root>
<element1>
<element2></element2>
</element1>
</root>

这需要在每个结束标记和带有子标记的标记之后插入“\ n”。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

formatOutput选项可以执行此操作。

答案 1 :(得分:2)

如果只是为了插入换行符,正则表达式就可以了。

但是,请勿start parsing XML with Regular Expressions

试试这个:

$xml = preg_replace(
         '=(<(.*?)>)(?![^<>]*</\2>|$)=s', 
         "\\1\n", 
         file_get_contents('php://input') ); 

该表达式使用 negative lookahead assertion [(?!..)]和backreference匹配所有未遵循EOF的XML标记或匹配的结束标记。