Düzgün PHP bir XML dizesine satırsonlarını nasıl eklenir?

5 Cevap php

Ben el gibi bir şeydir bir fonksiyon inşa bazı xml:

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

Ne zaman çıktı dize Ben mevcut olması satırsonlarını sevmeme rağmen. Nasıl bu xml kabul bir web hizmeti etkilemeden dize ekleyebilirsiniz? XML yeni satırlara bile önemi var?

5 Cevap

Yeni hatlar gerekli değildir ancak yeni satır karakteri bulma çapraz platform yoldur PHP_EOL sabiti kullanabilirsiniz. yani

$xml = "<myxml>".PHP_EOL;

Herhangi bir XML ayrıştırıcı, sadece onları görmezden beri $xml = "<myxml>\n";, ancak, hepsi de, gerekli değildir yaparak onları eklersiniz.

Eğer sadece örneğin gibi değişmez bir çok satırlı dize kullanabilirsiniz satır sonlarını farklı ("\ n", "\ r \ n", "\ r") hakkında endişelenmenize gerek yoksa

$xml = '<myxml>
  <items>
    <item1>blah</item1>
  </items>
</myxml>';

veya

$xml = <<< EOT
<myxml>
  <items>
    <item1>blah</item1>
  </items>
</myxml>
EOT;

Ama bu belgeler mutlaka eşdeğer olmadığını akılda tutmak

<myxml><items><item1>blah</item1></items></myxml>

http://www.w3.org/TR/REC-xml/ diyor ki:

2.10 White Space Handling
[...]
An XML processveya MUST always pass all characters in a document that are not markup through to the application. A validating XML processveya MUST also inform the application which of these characters constitute white space appearing in element content.

A special attribute named xml:space may be attached to an element to signal an intention that in that element, white space should be preserved by applications

Whitespaces can be marked as significant veyainsignificant and the consumer can more veyaless choose if it handles them as in-/significant, e.g. via <xsl:strip-space .../>.

hayır, onlar metin düğümleri dışında alakasız. IE, item1 düğüm içinde bir satır saygı olacak

Sen, bu gibi size XML yazabilirsiniz

$xml = <<<XML
<myxml>
 ...
</myxml>
XML;