HttpContext.Current.Response.ContentType = "text/xml";
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
HttpPostedFile file = HttpContext.Current.Request.Files[0];
// If file.InputSteam contains an "&", exception is thrown
XDocument doc = XDocument.Load(XmlReader.Create(file.InputStream));
HttpContext.Current.Response.Write(doc);
在生成xml文档之前,有没有办法用&
替换&
?只要文件包含&
,我当前的代码就会崩溃。
由于
答案 0 :(得分:2)
如果代码不是有效的XML,您的代码将会崩溃。例如,这应该没问题:
<foo>A & B</foo>
如果你实际得到了
<foo>A & B</foo>
然后你还没有XML文件。你可能有些东西看起来有点像XML,但它并不是真正有效的XML。
这里最好的方法是不动态转换数据 - 它是修复数据的源,以便它是真正的XML。在这个时代,任何产生无效XML的东西都没有任何借口。
此外,没有理由在这里使用XmlReader.Create
- 只需使用
XDocument doc = XDocument.Load(file.InputStream);
答案 1 :(得分:0)
使用HttpEncoder.HtmlEncode()
http://msdn.microsoft.com/en-us/library/system.web.util.httpencoder.aspx
答案 2 :(得分:0)
你可以使用“&amp; amp;”逃避“&amp;”。
在xml文档中,有一些字符应该被转义。
& ---- &
< ---- <
> ---- >
" ---- "
' ---- '