我试图从Web上读取一个xml文件,并使用XDocument解析它.它通常工作正常,但有时它给我这个错误的一天:
**' ',hexadecimal value 0x1F,is an invalid character. Line 1,position 1**
我已经尝试过Google的一些解决方案,但是它们不适用于VS 2010 Express Windows Phone 7.
有一个解决方案将0x1F字符替换为string.empty,但是我的代码返回一个没有替换方法的流.
s = s.Replace(Convert.ToString((byte)0x1F),string.Empty);
这是我的代码:
void webClient_OpenReadCompleted(object sender,OpenReadCompletedEventArgs e) { using (var reader = new StreamReader(e.Result)) { int[] counter = { 1 }; string s = reader.ReadToEnd(); Stream str = e.Result; // s = s.Replace(Convert.ToString((byte)0x1F),string.Empty); // byte[] str = Convert.FromBase64String(s); // Stream memStream = new MemoryStream(str); str.Position = 0; XDocument xdoc = XDocument.Load(str); var data = from query in xdoc.Descendants("user") select new mobion { index = counter[0]++,avlink = (string)query.Element("user_info").Element("avlink"),nickname = (string)query.Element("user_info").Element("nickname"),track = (string)query.Element("track"),artist = (string)query.Element("artist"),}; listBox.ItemsSource = data; } }
如果您正在解码从网络读取的内容,请考虑使用
System.Web.HttpUtility.HtmlDecode.