C# 从XmlElement到XmlElement的XSL转换

C# 从XmlElement到XmlElement的XSL转换,c#,xml,xslt,C#,Xml,Xslt,我的代码 XmlElement beforeTransform =getXmlElementForTransform(); XmlElement afterTransfrom; XslCompiledTransform xslt = new XslCompiledTransform(); xslt.Load("my.xslt", settings, new XmlUrlResolver()); 所需输出 xslt.Transform("input.xml","output.xml"); 大

我的代码

XmlElement beforeTransform =getXmlElementForTransform();
XmlElement afterTransfrom;

XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("my.xslt", settings, new XmlUrlResolver());
所需输出

xslt.Transform("input.xml","output.xml");

大约有15个Transform重载,但我找不到适合我需要的。我知道没有使用transform的直接XmlElement输出(或者没有输入XmlElement对象),所以我可以在输入和输出端进行转换。

对于输入,您应该能够使用。对于输出,您可以通过
XmlWriter
流式传输到
StringWriter
,然后将其读入:

xslt.Transform(beforeTransform,afterTransform);
ThirdPartyFunction(afterTransform);
注:编译后未测试


顺便说一句,如果您愿意切换到,您可以使用and直接从
XElement
容器流式传输到
XElement
容器

如果要使用
xslcomiledtransform.Transform
的结果填充
xmlement
对象,则可以使用
targetNode.CreateNavigator().AppendChild()
创建一个
XmlWriter
并使用
Transform
的几个重载之一来写入
XmlWriter

效果非常好。不可编辑。谢谢你的快速回答。我在同一天实施了它,但忘记了投票和接受答案。再次感谢。
        using (var writer = new StringWriter())
        {
            using (var xmlWriter = XmlWriter.Create(writer))
            {
                xslt.Transform(beforeTransform.CreateNavigator(), xmlWriter);
            }
            var tempDoc = new XmlDocument();
            tempDoc.LoadXml(writer.ToString());
            afterTransfrom = tempDoc.DocumentElement;
        }