2012-05-18 57 views
1

我正在將xml文件添加到dataset.I如果xml數據包含「&」或一些特殊的字符如何刪除該錯誤會出錯?如何刪除xml「&」符號

如何從下面的標籤中刪除「&」?

XML

< department departmentid=1 name="pen & Note" > 

$

string departmentpath = HostingEnvironment.MapPath("~/App_Data/Department.xml"); DataSet departmentDS = new DataSet(); System.IO.FileStream dpReadXml = new System.IO.FileStream(departmentpath, System.IO.FileMode.Open); try { departmentDS.ReadXml(dpReadXml); } catch (Exception ex) { //logg }
+1

'xml'是否來自您無法控制的來源?你顯示的文本是畸形的XML,這是這裏的基本問題。如果您需要容忍格式錯誤的xml,那麼您必須考慮轉換傳入的文本。反過來,這又要求您調查和定義輸入文本可能不符合XML的各種方式,以及您想如何「糾正」這些情況。 –

回答

1

取代它的​​代碼似乎是C#。但是請添加正確的語言標籤!

有五個特殊字符經常需要在XML文檔中轉義。你可以閱讀this SO問題。

有兩種可能性:

  • 讓你DataSet::ReadXML方法處理這些特殊字符[推薦]
  • 更改您輸入的所有特殊字符的文件[不推薦]

第二種方法是不推薦的,因爲你不可能總是控制傳入的數據(你可能會浪費如果你願意,可以預先處理它們)。要使ReadXML正確解析特殊字符,您需要在輸入XML中定義適當的編碼。

2

您可以&amp;

+0

這不是一個推薦的方法。關於爲什麼,請參閱下面的答案。 – dirkgently

+0

感謝gabizish,如何替換XML?如果我從URL獲得XML。 –

+0

@laksh - 如果XML來自帶有&符號的第三方URL,則應通知提供商他們提供的XML無效。與此同時,你可能需要做一些後處理來自己替換'&'和'&'。它應該是一個相當簡單的字符串替換函數來實現它,但要小心不要替換其他現有的實體代碼(即像'&'或'>'等''開始'&')。 – Spudley

2

XML的文化是創建XML的人負責提供符合規範的格式良好的XML;如果收件人錯誤,預計收件人會拒絕。因此,通過嘗試修復不良的XML並將其轉化爲良好的XML,您將不利於它。這就像在餐館裏得到糟糕的食物:你應該抱怨,而不是要求旁邊的人們如何使它易於消化。

您提供的輸入比「&」符號有更多的錯誤。它幾乎不可識別爲XML。你永遠不會把這個爛攤子變成一個強大的數據流。