【发布时间】:2011-08-17 15:01:59
【问题描述】:
在 C# 中,我有一个直接从 HTTP 响应创建的 XmlTextReader(我无法控制响应的 XML 内容)。
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
XmlTextReader reader = new XmlTextReader(response.GetResponseStream());
它可以工作,但有时其中一个 XML 元素节点会包含一个 Unicode 字符(例如“é”),这会让读者感到困惑。我尝试使用具有声明编码的 StreamReader,但现在 XmlTextReader 在第一行退出:“数据无效。第 1 行,位置 1”:
StreamReader sReader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Unicode);
XmlTextReader reader = new XmlTextReader(sReader);
有没有办法解决这个问题?或者,有没有办法阻止 XmlTextReader 解析具有潜在违规字符的元素(我知道它的名称)?我不关心那个特定的元素,我只是不想让它绊倒读者。
编辑:快速修复:将响应读入 StringBuilder(“sb”):
sb.Replace("é", "e");
StringReader strReader = new StringReader(sb.ToString());
XmlTextReader reader = new XmlTextReader(strReader);
【问题讨论】: