【问题标题】:How do i loop thourgh XPathNodeIterator and randomize its children?我如何循环遍历 XPathNodeIterator 并随机化它的孩子?
【发布时间】:2012-10-22 11:37:20
【问题描述】:

根据标题,我需要在 C#/.NET 4 中创建一个可以使 XPathNodeIterator 对象的顺序混乱的方法。该方法需要遍历所有子项(“/*”)以随机重新排序子项。

我需要一些帮助才能开始 - 我只有方法存根:

public XPathNodeIterator RandomizeXPathNodeIterator(XPathNodeIterator iterator)

感谢任何帮助! 谢谢

【问题讨论】:

  • 您的目标是哪个 .NET 版本?
  • 获取选中节点的数量:count(YourExpression) 设为N。然后在 C# 中生成从 1 到 N 的不同整数的随机序列(这不是 XPath 问题,尽管可以使用 XSLT 完成)。然后迭代迭代器并保持对迭代器当前位置的计数。填充一个节点数组(List),使当前节点占据各自的数组位置,即在随机序列中的位置,其值为当前节点在迭代器中的位置。

标签: c# xslt xpath xpathnavigator xpathnodeiterator


【解决方案1】:

您可以将 XPathNodeIterator 迭代为:

    XPathNavigator[] positions = new XPathNavigator[iterator.Count];
    int i = 0;

    while (iterator.MoveNext())
    {
        XPathNavigator n = iterator.Current;
        positions[i] = n;

        i++;
    }

然后,整理数组

【讨论】:

  • 我如何将 XPathNavigator[] 位置返回为 XPathNodeIterator?
  • XPathNodeIterator 是一个抽象类,如果您真的想要或需要您的方法返回一个XPathNodeIterator,那么您必须通过您自己的具体实现来扩展该抽象类,该实现覆盖抽象方法和属性(例如CountCurrentMoveNext ...)。然后你的方法可以创建一个具体实现的实例并返回它。
猜你喜欢
  • 2019-10-19
  • 2019-08-29
  • 2020-09-15
  • 2011-12-06
  • 2023-03-16
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
相关资源
最近更新 更多