【问题标题】:Sanitizing non-standard characters in a webservice for XML为 XML 清理 Web 服务中的非标准字符
【发布时间】:2013-12-11 20:34:43
【问题描述】:

我有一个包含用户列表的数据库,我偶尔会通过网络服务将该用户列表传递给远程机器。我接到我们的一个远程设施的电话,说没有新用户出现。

一点研究发现了问题 - 网络服务将数据库中的用户列表作为 XML 文件提供,其中一个用户的名字中有一个非标准字符(“María”)。目标 PC 看到这个非标准字符并窒息,因为 XML 已“损坏”,因此没有处理该点之后的记录。

短期修复很容易——玛丽亚变成了玛丽亚。突然间,所有记录都将毫无问题地处理。然而,长期解决方案是我所关心的。如何以某种方式强制识别这些非标准字符?

请注意,Web 服务只是获取数据库表的内容并将它们作为 XML 输出; XML 文件不是我手动形成的任何东西,而只是 web 服务的业务方式。

提前感谢您的帮助!

【问题讨论】:

  • 如果您无法控制 Web 服务如何格式化(编码)XML,那么您别无选择,只能向其发送经过净化的数据。这是一篇关于如何删除变音符号stackoverflow.com/questions/249087/…的帖子

标签: .net sql-server xml web-services


【解决方案1】:

我猜你正在通过字符串连接创建 XML。您应该使用XmlWriter 创建您的 XML 输出。它将负责非 ascii 字符、xml 实体和许多其他内容的正确编码。

如果不是这样,那么xml构建正确,xml解析代码有问题。

【讨论】:

  • XML 由 webservice 动态生成...我声明一个数据集并将其指向表,webservice 返回该数据集(在此过程中自动将其转换为 XML)。消费者声明一个数据集并将其指向网络服务,自动将 XML 转换回数据集。我实际上并不直接处理 XML。相反,.NET 创建 XML 并在后端使用它。
  • 您到底收到了什么异常?
  • 在文本内容中发现无效字符。'。找不到句柄为 0 的预准备语句。找不到句柄为 0 的预准备语句。 sp_xml_removedocument:为参数号 1 提供的值无效。 XML 解析错误 0xc00ce508 发生在第 111285 行,靠近 XML 文本“Mar”。声明已终止。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-07
  • 1970-01-01
  • 2017-06-24
相关资源
最近更新 更多