2011-03-11 86 views
1

我使用PHP DOMDocument创建XML文件,并且这些XML文件不能包含换行符。由DOMDocument生成XML并带有换行符

但是,当我使用的方法“saveXML()”,生成的XML自带的定义和初始标签之间换行,像这样:

<?xml version="1.0" encoding="UTF-8"?> 
<NFe xmlns="http://www.portalfiscal.inf.br/nfe"><infNFe... 

我可以纠正这个问题DOM文档?或者我必须在生成XML之后执行此操作?

我想纠正这个问题得到的结果是这样的:

<?xml version="1.0" encoding="UTF-8"?><NFe xmlns="... 
+1

为什么重要是否存在换行符? – Gordon 2011-03-11 19:04:38

+0

我正在使用这些XML与web服务进行通信。这个web服务不接受换行符(尽管它应该)。 – 2011-03-11 19:08:16

+0

@Paulo webservice是否需要xml prolog? – Gordon 2011-03-11 19:11:32

回答

2

默认情况下,DOMDocument::$preserveWhiteSpace是真实的。尝试将其设置为false,然后再次调用saveXML。如果文档内的任何空白都很重要,这可能会产生副作用。你还应该确保DOMDocument::$formatOutput是错误的。

正如Gordon所言,虽然对于空白限制没有任何合乎逻辑的理由。尽管严重,但如果您不希望任何空白,只要确保您要保留的任何CR/LF字符都是实体编码的,然后在关闭保留和格式化之后取出可能保留的换行符。但是,再次,这是愚蠢

+1

这不会删除序言后的换行符IIRC – Gordon 2011-03-11 19:11:01

+2

打破正则表达式的时间! – Charles 2011-03-11 19:13:55

+0

正是@Gordon – 2011-03-11 19:13:58