2013-11-26 43 views
0

我有一個包含用戶列表的數據庫,我偶爾會將該用戶列表通過web服務傳遞給遠程計算機。我從我們的一家遠程設施打來電話,說沒有新用戶出現。消毒用於XML的web服務中的非標準字符

有一項研究發現了這個問題 - web服務將數據庫中的用戶列表作爲XML文件提供,其中一名用戶的名字中有一個非標準字符(「María」)。目標PC將看到這個非標準字符和扼流器,因爲XML是「破碎的」,因此在該點之後的記錄中沒有任何記錄被處理。

短期修復很簡單 - 瑪麗亞成了瑪麗亞。突然間所有的記錄都會沒有問題地處理。然而,長期的解決方案是我所關心的。我該如何強制識別這些非標準字符?

請注意,web服務只是簡單地獲取數據庫表的內容並將其作爲XML進行吐出; XML文件不是我手動形成的任何東西,而只是web服務如何開展業務。

在此先感謝您的幫助!

+0

如果您無法控制Web服務如何格式化(編碼)XML,那麼您別無選擇,只能發送清理數據。這是一個關於如何刪除變音符的文章http://stackoverflow.com/questions/249087/how-do-i-remove-diacritics-accents-from-a-string-in-net – Paparazzi

回答

0

我想你是通過字符串連接創建XML。您應該使用XmlWriter來創建您的XML輸出。它將處理非ASCII字符,xml實體和許多其他事物的正確編碼。

如果情況並非如此,那麼xml是正確構建的,xml解析代碼有問題。

+0

XML由動態生成webservice ...我聲明一個數據集並將其指向表,並且webservice返回該數據集(在流程中自動將其轉換爲XML)。消費者聲明一個數據集並將其指向web服務,自動將XML轉換回數據集。我實際上並沒有直接處理XML;相反,.NET創建XML並在後端使用它。 –

+0

你會得到什麼異常? – edokan

+0

在文本內容中找到無效字符。'。 找不到句柄爲0的預處理語句。 找不到句柄爲0的預處理語句。 sp_xml_removedocument:參數編號1提供的值無效。 XML分析錯誤0xc00ce508發生在行號111285,靠近XML文本「 Mar」。 該聲明已被終止。 –