删除“&”从生成XML时的输入流

时间:2012-08-08 08:40:02

标签: c# asp.net xml

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文档之前,有没有办法用&替换&?只要文件包含&,我当前的代码就会崩溃。

由于

3 个答案:

答案 0 :(得分:2)

如果代码不是有效的XML,您的代码将会崩溃。例如,这应该没问题:

<foo>A &amp; B</foo>

如果你实际得到了

<foo>A & B</foo>

然后你还没有XML文件。你可能有些东西看起来有点像XML,但它并不是真正有效的XML。

这里最好的方法是不动态转换数据 - 它是修复数据的,以便它是真正的XML。在这个时代,任何产生无效XML的东西都没有任何借口。

此外,没有理由在这里使用XmlReader.Create - 只需使用

XDocument doc = XDocument.Load(file.InputStream);

答案 1 :(得分:0)

答案 2 :(得分:0)

你可以使用“&amp; amp;”逃避“&amp;”。

在xml文档中,有一些字符应该被转义。

& ---- &amp;

< ---- &lt;

> ---- &gt;

" ---- &quot;

' ---- &apos;