无法从已加载的输入文档中删除空白区域。 将输入文档提供为XmlReader

我想转换XML文档,但遇到问题。

我的XSLT看起来像这样:

               

我想要转换的XML文档如下所示:

 

这是我写的代码:

 public static string Transform(XmlDocument doc, XmlDocument stylesheet) { var transform = new System.Xml.Xsl.XslCompiledTransform(); XmlDocument domOutput = new XmlDocument(); stylesheet.PreserveWhitespace = false; transform.Load(stylesheet); // compiled stylesheet MemoryStream oStream = new MemoryStream(); var writer = new System.IO.StringWriter(); transform.Transform(doc, (XsltArgumentList)null, oStream); domOutput.Load(oStream); return writer.ToString(); } 

以下行引发exception

 transform.Transform(doc, (XsltArgumentList)null, oStream); 

exception消息:

无法从已加载的输入文档中删除空白区域。 将输入文档提供为XmlReader。

你能告诉我我做错了什么吗?

提前致谢!

我解决了 实际上“XslCompiledTransform.Transform”将XmlReader作为第一个参数,我在First Paramenter中传递XmlDocument。 这是代码。

 public static string Transform(XmlDocument doc, XmlDocument stylesheet) { try { System.Xml.Xsl.XslCompiledTransform transform = new System.Xml.Xsl.XslCompiledTransform(); transform.Load(stylesheet); // compiled stylesheet System.IO.StringWriter writer = new System.IO.StringWriter(); XmlReader xmlReadB = new XmlTextReader(new StringReader(doc.DocumentElement.OuterXml)); transform.Transform(xmlReadB, null, writer); return writer.ToString(); } catch (Exception ex) { throw ex; } }