再现无效的XML字符(Unicode:0x0)

时间:2013-09-06 02:29:50

标签: xml xslt unicode

我在XSL中收到以下提到的错误: An invalid XML character (Unicode: 0x0) was found in the element content of the document.

不太清楚为什么我会得到它。我在互联网上发现一些帖子说这是因为有些NULL值,有些人说这是解析器的问题。这个错误意味着什么?

2 个答案:

答案 0 :(得分:2)

错误消息的含义正是它所说的:文档中有一个“字符”,代码点为零,而XML不允许这样做。

为什么你会收到这个错误 - 也就是说,这个零如何出现在你的文件中 - 是我们无法从所提供的信息中得知的。

@ sudhAnsu63建议您如何修复文档以删除有问题的字符。但修复错误的文档并不能解决问题:您需要将数据损坏追溯到其来源并首先修复创建它们的过程。

答案 1 :(得分:0)

有些字符无法被xml解析器识别。你需要替换/ handel这些字符。  您可以在C#/ .Net中使用以下扩展方法在解析之前从xml文档中替换这些chracters。

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);
}