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;
}