2010-05-07 48 views
2

我有一些XML我手動的功能是一樣的東西構造:如何正確地將新行添加到PHP中的XML字符串中?

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

當我輸出,雖然我想要換行的String存在。我怎樣才能在不影響接受xml的Web服務的情況下將其添加到字符串中? XML中的換行符甚至是重要的?

回答

8

新行不必需的,但你可以使用PHP_EOL常數是尋找新的行字符的跨平臺的方式。即

$xml = "<myxml>".PHP_EOL; 
+0

我沒有意識到PHP_EOL常量感謝您的建議! – stormist 2010-05-07 16:30:24

+0

沒問題:)在PHP中有各種奇怪而美妙的東西,如果你有時候會覺得無聊,從頭到尾閱讀手冊。 – Rwky 2010-05-07 23:10:06

1

不,它們在文本節點之外是不相關的。 IE中,item1節點中的換行符將受到尊重

2

您可以通過執行$xml = "<myxml>\n";來添加它們,但根本不需要它們,因爲任何XML解析器都會忽略它們。

1

你可以寫你這樣的XML,

$xml = <<<XML 
<myxml> 
... 
</myxml> 
XML; 
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

的特殊屬性,:空間可被連接到一個元素的信號這樣的意圖:在該元件中,白色空間應該被應用程序

空白字符可以被標記爲顯著或無關緊要的,消費者能保留更多或更少的選擇,如果它處理他們作爲in /顯着,例如通過<xsl:strip-space .../>

+0

謝謝你非常詳細的解釋,一個非常豐富的答案。 (希望我可以接受多個) – stormist 2010-05-07 16:30:48

相關問題