无法从已加载的输入文档中删除空白区域。 将输入文档提供为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; } }