我一直在使用这个函数从字符串中读取 XML 并应用 XSLT 样式表,它对于 XML 的一小部分工作得很好:
private static string TransformXML(String XML, String XSLT)
{
string output = String.Empty;
using (StringReader srt = new StringReader(XSLT))
{
using (StringReader sri = new StringReader(XML))
{
using (XmlReader xrt = XmlReader.Create(srt))
using (XmlReader xri = XmlReader.Create(sri))
{
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(xrt);
using (StringWriter sw = new StringWriter())
using (XmlWriter xwo = XmlWriter.Create(sw, xslt.OutputSettings)) // use OutputSettings of xsl, so it can be output as HTML
{
xslt.Transform(xri, xwo);
output = sw.ToString();
}
}
}
}
return output;
}
但是,对于大部分 XML,我会遇到错误,即使我知道它的格式正确。
这是一个示例错误:解析名称时出现意外的文件结尾。第 1 行,位置 30001。
我猜缓冲有一个限制,但我无法完全解决 - 代码位于 SSIS 包中,不同的脚本任务生成和翻译 XML。
我很感激任何帮助!