2017-07-21 34 views
0

使用MS Visual Studio 2013創建C#應用程序,我試圖在XML文檔中獲取以下輸出。在C#中使用System.Xml.Linq XText如何獲得文檔中的&而不是&

<UnitsOfMeasure> 
    &uom-data; 
</UnitsOfMeasure> 

我不斷收到

<UnitsOfMeasure> 
    &amp;uom-data; 
</UnitsOfMeasure> 

這是我曾嘗試

XElement uom = new XElement("UnitsOfMeasure"); 
uom.Add("\n" + tab2, new XText("&uom-data;"), "\n" + tab1); 
sd.Add("\n" + tab1, uom); 
sd.Add("\n"); 

XElement uom = new XElement("UnitsOfMeasure"); 
uom.Add("\n" + tab2, new XText((char)38 + "uom-data;"), "\n" + tab1); 
sd.Add("\n" + tab1, uom); 
sd.Add("\n"); 

感謝

+1

第一個不是[有效的xml](http://keylimetie.com/blog/2008/9/25/how-to-safely-escape-in​​valid-xml-characters/)。你必須對某些字符進行編碼,'&'就是其中之一,所以第二個是正確的。 – juharr

+0

@juharr - 實際上它*可以是*有效的Xml。我在我的回答中進一步解釋。 –

+0

如果你正在嘗試編寫一個實體,那麼這可能是一個重複的https://stackoverflow.com/questions/707062/linq-to-xml-and-custom-xml-entities – juharr

回答

0

的問題是,&在XML具有特殊意義的代碼 - 它用逃避其他事情;例如參見beware of the ampersand when using xml。爲您編寫的內容是在XML內包含&符號的正確方法,並且在XML解析器讀取它時,它應該將&轉換回&。

或許,如果有的話,你可能會遇到任何代碼讀取XML的問題,因爲它應該將它轉換回來。

0

XML具有所謂的「實體」,其形式爲ampersand-characters-semicolon

的XML實體是文本的不同塊別名(雖然在大多數情況下,實體僅僅只是用來插入一個字符 - 通常鍵盤上的字符不是)

&amp;是最常用使用 - 這是插入&&copy;用於版權符號。

除了標準的,你可以定義你自己的。

事實上,你試圖輸入 - &uom-data; - 如此整齊地遵循實體格式,我懷疑它確實是一個實體,你只是錯過了它定義的部分。

相關問題