我试图将Xml序列化来自不同来源的大量字符串。
问题是如果字符串包含序列化程序无法处理的字符,则XmlSerializer会抛出异常。
当然我已经完成了基本的字符串规范化,但找到了" bad"人物一次又一次。最新的3个是:'\a', '\0', '\u001f'
有没有办法从字符串中删除所有不支持的字符或让XmlSerializer忽略它们?
我目前的代码是:
public static string CleanupStringForValidXMLExport(this string inputString)
{
if (!inputString.IsNullOrEmpty())
{
//InvalidXMLCharacters
return inputString.Remove(new[] { '\x1A', '\x1D', '\x0B', '\x01', '\x02', '\x03', '\x04', '\x17', '\x18', '\a', '\0', '\u001f' })
.RemoveMultipleWhiteSpaces()
.ReplaceUmlauts()
.ReplaceSpecialChars();
}
return inputString;
}
答案 0 :(得分:1)
Many characters在XML中被视为无效,即使它们作为实体引用出现(例如#x0
)。但是,如果您在XmlReader
:
new XmlReaderSettings { CheckCharacters = false };
请注意,这会关闭实体的字符检查,而不会关闭无效的普通字符,但您可以将它们转换为预处理方法中的实体,以便保留所有内容。
答案 1 :(得分:0)
尝试此操作以删除无效的xml字符
view()->shar