使用XSL进行XmlDocument转换

时间:2011-11-04 01:30:15

标签: c# xml xslt

如果这是一个显而易见的问题,我很抱歉,但是我在试图找到答案时感到非常沮丧。

我可以在已加载的XmlDocument上执行XSL转换吗?也就是说,无需为文档创建一个编写器?

我问,因为我在要排序的WPF应用程序中有一个XmlDocument绑定。这种类型可能会有点复杂,所以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.Document是一个XmlDocument),以便XmlDocument具有转换的结果。

实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以做的最接近的是创建一个新的XmlDocument,例如

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

然后将其分配给您的财产:

xmlDP.Document = result;

当然,这需要设置xmlDP.Document。

答案 1 :(得分:0)

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