0
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文档之前有什么方法可以替换&吗?&每当文件包含&.

谢谢

4

3 回答 3

2

只有当它不是有效的 XML 时,您的代码才会崩溃。例如,这应该没问题:

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

如果你真的

<foo>A & B</foo>

那么您还没有获得 XML 文件。您可能有一些看起来有点像 XML,但它不是真正有效的 XML。

这里最好的方法不是动态转换数据——而是修复数据,使其成为真正的 XML。在当今时代,任何产生无效 XML 的东西都没有任何借口。

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

XDocument doc = XDocument.Load(file.InputStream);
于 2012-08-08T08:45:44.773 回答
0

采用HttpEncoder.HtmlEncode()

http://msdn.microsoft.com/en-us/library/system.web.util.httpencoder.aspx

于 2012-08-08T08:42:36.573 回答
0

你可以使用“&” 逃离 ”&”。

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

& ---- &amp;

< ---- &lt;

> ---- &gt;

" ---- &quot;

' ---- &apos;
于 2012-08-08T08:54:13.697 回答