有時,當將XML解析到PHP的DOMDocument中並使用formatOutput=true
進行輸出時,將在不需要XML標記的地方引入空白區域。是否有一種標準的方式來表明空白在單個XML元素中很重要?
例如:
<td><i>lorem</i><b>ipsum</b></td>
變得此,它增加了兩個單詞之間的空格:
<td>
<i>lorem</i>
<b>ipsum</b>
</td>
之一來解決此方法是在手動添加零寬度空間以便解析器將該元素的內容視爲混合內容:
<td><i>lorem</i><b>ipsum</b>​</td>
另外還有xml:space="preserve"
屬性,這是應該做的解析器把所有的白色空間,顯著,但它似乎並沒有在這種情況下,任何影響:
<?php
$dom = new DOMDocument;
$dom->loadXML('<td xml:space="preserve"><i>lorem</i><b>ipsum</b></td>');
$dom->formatOutput = true;
print $dom->saveXML();
/* Output:
<?xml version="1.0"?>
<td xml:space="preserve">
<i>lorem</i>
<b>ipsum</b>
</td>
*/
有沒有辦法(也許使用DTD)告訴XML解析器/編寫器,某些標記(本例中的<i>
和<b>
)代表內聯元素,並且它們之間的空白很重要,或手動將特定元素標記爲包含混合內容?
CDATA也許?? ?? –
添加CDATA只是意味着尖括號得到解釋爲文本,並且在輸出獲得轉義:'<我> LOREM </I > <b> ipsum的</B >' –