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就地用XSL进行转换

你能做的最接近的是创建一个新的XmlDocument,例如

XmlDocument result = new XmlDocument();
using (XmlWriter xw = result.CreateNavigator().AppendChild())
{
  compTrans.Transform(xmlDP.Document, null, xw);
  xw.Close();
}

然后赋值给你的属性:

xmlDP.Document = result;

当然,这需要xmlDP。可设置文档

XSLT总是创建一个新文档来保存转换结果,它从不修改输入文档。