读取xml报16进制字符错误,因为xml文件中包括特殊字符,如u0018,造成解析错误
解析方法:剔除xml特殊字符再读取
private string RemoveInvalidXmlChars(string text)
{
var validXmlChars = text.Where(ch => XmlConvert.IsXmlChar(ch)).ToArray();
return new string(validXmlChars);
}
private void OnRecvMessage(string Message) //接收到插件发来的消息触发该事件
{
try
{
RtxMessage rm = new RtxMessage();
StringReader sr1 = new StringReader(RemoveInvalidXmlChars(Message.Content));//避免0/这种异常字符
XmlReader xr1 = XmlTextReader.Create(sr1); // xr1's type is XmlTextReaderImpl
while (xr1.Read())
{
if (xr1.Name == "Item")
{
switch (xr1["Key"])
{
case "Mode": { if (xr1.Read()) { rm.Mode = xr1.Value; }; break; }
case "Content": { if (xr1.Read()) { rm.Content = GetContent(xr1.Value); }; break; }
case "Initiator": { if (xr1.Read()) { rm.Initiator = xr1.Value; }; break; }
case "Key": { if (xr1.Read()) { rm.Key = xr1.Value; }; break; }
case "Title": { if (xr1.Read()) { rm.Title = xr1.Value; }; break; }
case "im_message_id": { if (xr1.Read()) { rm.im_message_id = xr1.Value; }; break; }
default: { break; }
}
}
}
}
catch (COMException xe)
{
}
}