我在我的 XSL 中收到以下提到的错误:
An invalid XML character (Unicode: 0x0) was found in the element content of the document.
不太清楚为什么我会得到它。我在互联网上发现一些帖子说这是因为一些 NULL 值,有些人说这是解析器的问题。这个错误是什么意思?
错误消息的含义正是它所说的:您的文档中有一个代码点为零的“字符”,这是 XML 不允许的。
为什么你会收到这个错误——也就是说,这个零是如何出现在你的文档中的——我们不希望从所提供的信息中知道。
@sudhAnsu63 建议您如何修复文档以删除违规字符。但是修复坏文档并不能解决问题:您需要将数据损坏追踪到其源并修复首先创建它们的过程。
xml 解析器无法识别某些字符。你需要更换/处理这些字符。您可以在 C#/.Net 中使用以下扩展方法在解析之前从您的 xml 文档中替换这些字符。
public static string CleanInvalidXmlChars(this string StrInput)
{
// From xml spec valid chars:
// #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
// any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.
string RegularExp = @"[^\x09\x0A\x0D\x20-\xD7FF\xE000-\xFFFD\x10000-x10FFFF]";
return Regex.Replace(StrInput, RegularExp, String.Empty);
}