c# - 读取包含无效字符的 XML 文件

标签 c# xml

我正在使用 Dataset.ReadXML() 读取 XML 字符串。我收到错误,因为 XML 字符串包含无效字符 0x1F,即“US”-单位分隔符。这包含在完全形成的标签内。

使用 Perl 脚本从 Oracle DB 中提取数据。转义该字符以便正确读取 XML 的最佳方法是怎样的。

编辑:XML 字符串:

<RESULT>
<DEPARTMENT>Oncology</DEPARTMENT> 
<DESCRIPTION>Oncology</DESCRIPTION> 
 <STUDY_NAME>**7360C hsd**</STUDY_NAME> 
 <STUDY_ID>27</STUDY_ID> 
</RESULT>

在粗体部分的 C 和 h 之间,有一个 US 分隔符,粘贴到这里时实际上显示一个空格。所以我想知道如何在 XML 字符串中忽略它?

最佳答案

如果你看section 2.2 of the XML recommendation ,您将看到 x01F 不在 XML 文档允许的字符范围内。因此,虽然您正在查看的字符串对您来说可能看起来像 XML 文档,但它并不是一个。

你有两个问题。相对较小的一个是如何处理这个文档。我可能会预处理字符串并丢弃在格式良好的 XML 中不合法的任何字符,但随后我对相对较大的问题一无所知。

相对较大的问题是:这些数据首先在那里做什么? (大概)人类可读的数据字段中间的不可见 ASCII 字符有何用途(如果有)?为什么生成此字符串的 Perl 脚本在遇到非法字符时不会失败?

我敢跟你赌一美元,这是因为编写该脚本的人使用字符串操作而不是 XML 库来发出 XML 文档。这就是为什么,正如我一再说过的,您不应该使用字符串操作来生成 XML。 (当然也有异常(exception)。例如,如果您正在编写一次性应用程序或 XML 解析器。或者如果您的名字是 Tim Bray。)

关于c# - 读取包含无效字符的 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5016127/

相关文章:

c# - 在 C# 中计算 NxN 矩阵行列式

javascript - 根据其值更改表格单元格的背景颜色(通过 XML 导入)

c# - 代码签名证书是否有助于病毒扫描程序的误报

c# - 控制台应用程序的多个配置文件

java - 将 XML 解析值存储在 textview 而不是 listeview 中

javascript - 如何从 API 请求

xml - 选择与特定节点的并集匹配的所有子节点

Android SeekBar 长度与 layout_width 值不匹配

c# - 图片上传和图片 slider

c# - 如何确定一个类是在控制台应用程序还是 wpf 中实例化?