c# - 编码 xml 并保存到 SQL Server

标签 c# sql-server xml encoding

有一个 Web 应用程序,可以让您粘贴文本并将其保存到数据库。

文本有 €(欧元货币)符号,一旦它到达数据库,它就会在 SQL 中解析 XML 时崩溃。原因是无效字符。

我通过使用 C# 在 Web API 中将 € 替换为 解决了这个问题。现在 XML 包含 并且它被解析为 SQL。我查看数据库中保存的行,它显示 €。太棒了!

我返回 Web 应用程序并调出已保存的文本。我希望看到“€52.9mm”,但我看到的却是“52.9mm”。

我按下 F12,刷新并看到它确实检索到存储在数据库中的“€52.9mm”。但是 UI 显示“52.9mm”。

为了好玩,我将数据库中的值更改为 € 52.9 毫米。刷新 UI 现在显示“€52.9mm”。

一个实用的解决方案是将数据库中的文本保存为 € 52.9mm?

如果这可行,我如何才能将其保存为这种格式(它在 XML 中的格式)?但在它被 SQL 解析后,它被保存为 €52.9mm。

有没有更好的解决方案?

最佳答案

最好的方法是使用 CDATA将 HTML 包装在 XML 标记元素中。那么您无需担心转义或转换非 xml 安全字符。

现在您还没有显示有关构建此 xml 文件的任何详细信息,但让我们采用标准的 XElement。将内容保存为CDATA你只需写..

xDocument.Add(new XElement("MyHtml", new XCData("<p>My HTML Content</p>"));

CDATA

CDATA sections may occur anywhere character data may occur; they are used to escape blocks of text containing characters which would otherwise be recognized as markup. CDATA sections begin with the string <![CDATA[ and end with the string ]]>

http://www.w3.org/TR/REC-xml/#sec-cdata-sect

关于c# - 编码 xml 并保存到 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931220/

相关文章:

c# - 散布一个列表<>

sql-server - 如何停止(解除分配)Azure 中的 SQL Server?

android - 渐变 XML 可绘制中心不起作用

xml - 根据xml标签内容重命名文件

sql - 如何从表中查找具有单引号字符串的字符串?

android - 真的有办法在 Android 上验证 XML 文档吗?

c#获取所有属性值

c# - 我可以将 .aspx 页面中的 java 脚本接收到的值传递到 asp.net 中相应的 .cs 文件吗?

c# - 如何在xml中使用getelementid进行搜索

sql - 无法清除 SQL 注入(inject)的结果