我正在使用XLinq(XML到Linq)解析xml文檔,文檔的一部分涉及表示富文本,並使用xml:space="preserve"
屬性來保留富文本元素內的空白。爲什麼XLinq會重新格式化我的XML?
我遇到的問題是,當我只有一個包含子元素但沒有文本的RTF格式的文本時,XLinq會重新格式化xml並將其放在自己的行上。這當然會導致創建額外的空白區域,從而改變原始內容。
實例:
<rich-text xml:space="preserve">
<text-run><br/></text-run>
</rich-text>
結果:
<rich-text xml:space="preserve">
<text-run>
<br/>
</text-run>
</rich-text>
如果我添加一個空格或<br/>
之前任何其他文本的原始XML像這樣
<rich-text xml:space="preserve">
<text-run> <br/></text-run>
</rich-text>
解析器不重新格式化xml
<rich-text xml:space="preserve">
<text-run> <br/></text-run>
</rich-text>
如何防止XML解析器重新格式化我的元素?
這是重新格式化正常的XML解析還是這只是一個不需要的XLinq解析器的副作用?
編輯: 我解析這樣的文件:
using (var reader = System.Xml.XmlReader.Create(stream))
return XElement.Load(reader);
我沒有使用任何自定義或
LoadOptions
當我使用.Value
財產上的文本運行XElement
出現該問題
獲取元素的文本值。相反,接收\n
這將是從原始的XML輸出正確的,我會收到
\n \n
注意額外的空格和換行,由於重新格式化!在調試器中檢查元件或調用.ToString()
時也可以觀察到格式化。
你在哪裏觀察這個格式化?請在此XElement上顯示更多代碼。 – 2011-04-12 07:31:51
增加了一些更多信息。 – 2011-04-13 00:06:03
添加一些搜索關鍵字:'XElement.Parse'添加空格,縮進,製表符。 – 2017-12-20 20:11:32