我有一些XML我手動的功能是一樣的東西構造:如何正確地將新行添加到PHP中的XML字符串中?
$xml = "<myxml>";
$xml .= "<items>";
$xml .= "<item1>blah</item1>";
$xml .= "</items>";
$xml .= "</myxml>";
當我輸出,雖然我想要換行的String存在。我怎樣才能在不影響接受xml的Web服務的情況下將其添加到字符串中? XML中的換行符甚至是重要的?
我有一些XML我手動的功能是一樣的東西構造:如何正確地將新行添加到PHP中的XML字符串中?
$xml = "<myxml>";
$xml .= "<items>";
$xml .= "<item1>blah</item1>";
$xml .= "</items>";
$xml .= "</myxml>";
當我輸出,雖然我想要換行的String存在。我怎樣才能在不影響接受xml的Web服務的情況下將其添加到字符串中? XML中的換行符甚至是重要的?
新行不必需的,但你可以使用PHP_EOL常數是尋找新的行字符的跨平臺的方式。即
$xml = "<myxml>".PHP_EOL;
不,它們在文本節點之外是不相關的。 IE中,item1節點中的換行符將受到尊重
您可以通過執行$xml = "<myxml>\n";
來添加它們,但根本不需要它們,因爲任何XML解析器都會忽略它們。
你可以寫你這樣的XML,
$xml = <<<XML
<myxml>
...
</myxml>
XML;
如果您不必擔心不同種類的換行符(「\ 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 .../>
。
謝謝你非常詳細的解釋,一個非常豐富的答案。 (希望我可以接受多個) – stormist 2010-05-07 16:30:48
我沒有意識到PHP_EOL常量感謝您的建議! – stormist 2010-05-07 16:30:24
沒問題:)在PHP中有各種奇怪而美妙的東西,如果你有時候會覺得無聊,從頭到尾閱讀手冊。 – Rwky 2010-05-07 23:10:06