2011-03-11 85 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