2016-10-26 72 views
0

我有一個XML文件,我將其附加到我的網站庫中。 XML有拉丁字符,所以我使用這種方法編碼它item.Attachments.Add("xyz.xml", Encoding.GetEncoding("iso-8859-1").GetBytes(writerXml.ToString()));使用特殊拉丁字符對XML文件進行編碼

問題是當我試圖打開瀏覽器中的文件它打破了特殊字符發生的地方。它給出的錯誤爲無法使用XSL樣式表查看XML輸入。

我想知道如何解決這個問題,爲什麼我無法在瀏覽器中生成它?

嘗試使用下面的代碼添加聲明:

XDocument doc = new XDocument(); 
      doc.Declaration = new XDeclaration("1.0","ISO-8859-1", null); 
      XElement element = new XElement("webapp", new XAttribute("name", webApp.Name), new XAttribute("id", webApp.Id), 
          MyInformation; 
      doc.Add(element); 
      return doc.ToString(); 
     } 
+0

請發佈一個可重現的示例(XML + XSLT)。並說明您使用的瀏覽器。 –

+0

使用IE,我可以得到文件中斷的確切值(即特殊字符)。使用Chrome我得到錯誤的行號和列號 –

回答

0

顯然,文件的編碼也不是什麼瀏覽器認爲它是。

我真的不明白爲什麼現在要使用iso-8859-1而不是utf-8,但如果這是您的選擇,您需要確保(a)在開始時的XML聲明的文件聲明爲iso-8859-1,並且(b)當文件被提供時,HTTP頭中沒有衝突的聲明。我的猜測(幾乎沒有證據)是,文件上沒有XML聲明,所以瀏覽器使用UTF-8。

+0

所以你說的是,如果我在XML生成的開始添加行<?xml version =「1.0」encoding =「ISO-8859-1」?> ..它應該工作嗎? 我在做ISO-8859-1,因爲它已經在處理拉丁字符的代碼中實現了 –

+0

那麼我可以肯定地說,如果文件使用iso-8859-1編碼,並且沒有在開始然後它不會工作。首先解決問題,看看是否還有其他問題。然而,用這種方式手動構建一個XML文件可能不是一個好主意:還有很多其他的東西可能會出錯,比如轉義。更好地使用圖書館的目的。 –

+0

好的..感謝您的指導..我通過代碼構建XML,並且在沒有特殊字符的情況下,我可以在瀏覽器中打開它。所以我會修復相同的代碼來獲得開始標記。一旦我有結果將更新。再次感謝!! –