檢查了一下這份XML發現的確被塞入了三個bytes的UTF-8 BOM
接下來就是想辦法把它拿掉了,以下提供一範例參考自http://efreedom.com/Question/1-2070661/Change-XML-String-XDocumentParse-Reads並做修改
byte[] bytes = Encoding.UTF8.GetBytes(xml);與參考網址不同的地方是if判斷式的寫法,因為實測之後發現若XML不含BOM字元的話XML的第一個字元會被截掉而造成錯誤,故改以檢查byte方式進行判斷
if (bytes[0] == 0xef && bytes[1] == 0xbb && bytes[2] == 0xbf)
{
string byteOrderMarkUtf8 = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble());
xml = xml.Remove(0, byteOrderMarkUtf8.Length);
}
其中的Encoding.UTF8.GetPreamble()用意是在取得UTF-8 BOM的二進位字元(EF BB BF)
No comments:
Post a Comment