如何将XmlNodeList转换为要在XSLT中使用的NodeSet?
时间:2020-03-06 14:58:31 来源:igfitidea点击:
我有一个XmlNodeList,我需要以一种格式使用它,然后可以通过从Cextension方法调用它来在XSLT样式表中重新使用它。
有人可以帮忙吗?我已经读到它可能与使用XPathNavigator有关,但是我仍然有些卡住。
解决方案
几年前,我不得不自己解决这个问题。我管理它的唯一方法是创建一个XML片段,其中包含节点列表中的节点,然后传入该片段的子代。
XsltArgumentList arguments = new XsltArgumentList(); XmlNodeList nodelist; XmlDocument nodesFrament = new XmlDocument(); XmlNode root = nodesFragment.CreateElement("root"); foreach (XmlNode node in nodeList) { root.AppendChild(node); } nodesFragment.AppendChild(root); arguments.AddParam("argumentname", string.Empty, nodesFragment.CreateNavigator().SelectChildren(XPathNodeType.All));
然后,我们当然需要确保XSLT中具有相应的参数。
请注意,我们可能不需要其他XmlDocument。我们可以仅在根XmlNode实例上调用CreateNavigator()并使用现有的XmlDocument来创建元素(我之前写过这段代码,从那时起我已经学到了很多,但是我知道上面的代码有效,但我没有尝试过任何替代方案)。
最后的注释是最有用的,实际上我已经将XmlNodeList转换为XmlDocument,因此可以仅使用那里的Navigator并将其创建为XPathNodeIterator。
谢谢帮助!