我的代码:
using (XmlTextReader inputReader = new XmlTextReader(xml, XmlNodeType.Document, new XmlParserContext(null, null, "en", XmlSpace.Default)))
{
XsltArgumentList arglist = new XsltArgumentList();
GetXSLT().Transform(inputReader, arglist, outputStream);
}
XmlTextReader
创建得很好,在XML内部有一个垂直制表符的实体引用(
)
错误的行是对Transform的调用。它表示存在无效的XML字符(当然是垂直制表符)。
我尝试过使用以下文章中提到的方法:
Escape invalid XML characters in C#
我的问题是:如何使用.NET框架删除或忽略无效字符,如链接状态?
注意:某种方式并不涉及硬编码实体引用列表来替换(我已经这样做了,这很糟糕,我感觉很糟糕,我应该这样做)
答案 0 :(得分:1)
尝试在阅读和写作时忽略无效的XML字符:
var readerSettings = new XmlReaderSettings() { CheckCharacters = false, ConformanceLevel = ConformanceLevel.Document };
using (var inputReader = XmlTextReader.Create(xml, readerSettings, new XmlParserContext(null, null, "en", XmlSpace.Default)))
{
XsltArgumentList arglist = new XsltArgumentList();
var xslt = GetXSLT();
var writerSettings = xslt.OutputSettings.Clone();
writerSettings.CheckCharacters = false;
using (var outputWriter = XmlWriter.Create(outputStream, writerSettings))
{
xslt.Transform(inputReader, arglist, outputWriter);
}
}