使用&符号使用XmlSerializer()反序列化XML
当XML具有“Lord&Hogan”等数据时,以下代码会中断。 有什么建议? 谢谢,肯
private T GetResponse(String apiObject, String query) { //Deserialize XML into the type specified. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(BuildRequestUri(apiObject, query)); using (HttpWebResponse resp = (HttpWebResponse)request.GetResponse()) { try { XmlSerializer ser = new XmlSerializer(typeof(T)); return (T)ser.Deserialize(resp.GetResponseStream()); } catch (Exception e) { error = e.InnerException.ToString(); return default(T); } } }
从这里 :
XML标准不允许XML标记内的文字符号,并且任何XML解析器都无法解析此类文档。
StackOverflow上的其他类似问题:
- 如何在XML中转义&符号
- 为什么RSS不能处理&符号?
- 用&符号解析XML
- 使用&符号使用XmlSerializer()反序列化XML
- 还有更多!
你应该对像“Lord&Hogan”这样的数据进行XML编码。 它应该像这样编码:
"Lord & Hogan"
&
xml应替换为&
否则它是无效的字符。
这是可以用来替换所有不允许的字符的函数: https ://msdn.microsoft.com/en-us/library/system.security.securityelement.escape( v= vs.110).aspx