繁体   English   中英

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

[英]Remove “&” from input stream when generating 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文档之前? 只要文件包含&我当前的代码就会崩溃。

谢谢

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

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

如果你真的得到了

<foo>A & B</foo>

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

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

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

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

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

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

& ---- &amp;

< ---- &lt;

> ---- &gt;

" ---- &quot;

' ---- &apos;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM