如果这是一个显而易见的问题,我很抱歉,但是我在试图找到答案时感到非常沮丧。
我可以在已加载的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具有转换的结果。
实现这一目标的最佳方法是什么?
答案 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总是创建一个新文档来保存转换结果,它永远不会修改输入文档。