C# · 12月 30, 2021

使用XPath /应用XSL转换遍历任意的C#对象图

我一直在寻找一个允许我将任意C#对象传递给XSL转换的组件.

这样做的天真的方法是使用XmlSerializer对对象图进行序列化;然而,如果你有一个大的对象图,这可能会导致问题,就性能而言.诸如循环引用,懒惰加载,代理等问题可能会使这里的水体进一步浑浊.

一个更好的方法是使用某种实现IXPathNavigable和XPathNavigator的Adapter类.我遇到的一个这样的例子是ObjectXPathNavigator from Byte-Force – 但是,它的大多数关键文档都是俄文,而我的初始测试似乎表明它有一些怪癖和特质.

有没有人知道(a)关于这个英文的任何资源(概述,教程,博客文章等),或者(b)提供相同或相似功能的任何其他替代方案?

解决方法 有一个(非常)旧的MSDN文章,标题为 XPath Querying Over Objects with ObjectXPathNavigator ,它实现了一个类似的类(也称为ObjectXPathNavigator,有趣的是).我在这几年前使用Visual SourceSafe查询一些数据,并从更改日志中构建一个RSS提要,并且运行得很好.但是,我没有使用XSLT,所以我不知道是否有效.另外,请注意,它是为Framework 1.0编写的,因此您可能需要更新它以获取更多近期的框架.此外,现在可能有更好的方法来实现,但它会给你一个起点(文章做的很好,解释它是如何工作的).