XmlDocument就地用XSL进行转换
本文关键字:转换 XSL XmlDocument | 更新日期: 2023-09-27 18:13:33
我很抱歉,如果这是一个明显的问题,但我有点沮丧,试图找到一个答案。
我可以在加载的XmlDocument上执行XSL转换吗?也就是说,不需要为文档创建写入器。
我问,因为我有一个XmlDocument绑定在WPF应用程序,我想排序。排序可能会变得有点复杂,因此XSL似乎是一个很好的选择。这里是我卡住的代码:
XmlDataProvider xmlDP = (XmlDataProvider)this.Resources["ItemDB"];
string xsltPath = System.Configuration.ConfigurationManager.AppSettings["XSLDirextory"];
string path = xsltPath + "SortItemName.xslt";
if (System.IO.File.Exists(path))
{
XslCompiledTransform compTrans = new XslCompiledTransform();
compTrans.Load(path);
//compTrans.Transform(xmlDP.Document, new XsltArgumentList(), xmlDP.Document.XmlResolver);
}
加载转换后,我想只是能够compTrans(xmlDP.Document);或者有同样效果的东西。(明确地说,是xmlDP。文档是一个XmlDocument),因此XmlDocument具有转换的结果。
实现这一点的最好方法是什么?
你能做的最接近的是创建一个新的XmlDocument
,例如
XmlDocument result = new XmlDocument();
using (XmlWriter xw = result.CreateNavigator().AppendChild())
{
compTrans.Transform(xmlDP.Document, null, xw);
xw.Close();
}
然后赋值给你的属性:
xmlDP.Document = result;
当然,这需要xmlDP。可设置文档
XSLT总是创建一个新文档来保存转换结果,它从不修改输入文档。