我必须创建一个升级机制,它将更新一个XML文档(更新为另一个xml文档)。
我必须尊重的方法的签名是:
public XmlDocument Update(XmlDocument sourceDocument){...}在此基础上应用XSLT文件的最有效方法是什么?
我本来希望能够使用XslTransform类,但它只接受流和XmlWriter作为输出的参数。
所以我知道我可以这样做:
public XmlDocument Update(XmlDocument sourceDocument){
XslTransform myXslTransform = new XslTransform();
myXslTransform.Load("myXsl.xsl");
MemoryStream ms = new MemoryStream();
myXslTransform.Transform(sourceDocument, null, ms);
XmlDocument output = new XmlDocument();
output.Load(ms);
return output;
}但是我发现这不是很有效(知道我的XSLT将重命名一些节点,在中间添加一个节点,添加一个子节点)。有办法做得更好吗?
我的“唯一”约束是:输入/输出: XmlDocument,要加载的外部XSLT。
发布于 2015-01-12 13:39:18
如果要将System.Xml.XmlDocument与微软提供的当前XSLT1.0实现(XslCompiledTransform)结合使用,则可以使用
XmlDocument resultDocument = new XmlDocument();
using (XmlWriter xw = resultDocument.CreateNavigator().AppendChild()) {
XslCompiledTransform proc = new XslCompiledTransform();
proc.Load("myXsl.xsl");
proc.Transform(sourceDocument, null, xw);
xw.Close();
}
return resultDocument;https://stackoverflow.com/questions/27902974
复制相似问题