2012-10-22 52 views
2

根據標題,我需要在C#/。NET 4中創建一個可以混亂XPathNodeIterator對象的順序的方法。該方法需要循環所有的子項(「/ *」)來隨機地重新排序子項。我如何循環使用XPathNodeIterator並隨機化其子項?

我需要一些幫助一些上手 - 我只有在方法存根:

public XPathNodeIterator RandomizeXPathNodeIterator(XPathNodeIterator iterator) 

任何幫助表示讚賞! 感謝

+0

你指定哪些.NET版本? –

+1

獲取所選節點的數量:'count(YourExpression)'讓它成爲'N'。然後在C#中生成一個從1到N的不同整數的隨機序列(這不是一個XPath問題,儘管它可以使用XSLT來完成)。然後迭代迭代器並保持迭代器當前位置的計數。填充節點的數組(List),以便當前節點佔據相應的數組位置,這是位於隨機序列中的位置,其值是迭代器中當前節點的位置。 –

回答

0

可以遍歷創建XPathNodeIterator爲:

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

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

     i++; 
    } 

然後,scrumble陣列

+0

如何將XPathNavigator []定位爲XPathNodeIterator? – atp03

+0

'XPathNodeIterator'是一個抽象類,如果您真的想要或需要您的方法返回一個'XPathNodeIterator',那麼您將不得不通過您自己的具體實現來擴展抽象類,這會重寫抽象方法和屬性(例如'Count', 'Current','MoveNext' ...)。然後你的方法可以創建一個具體實現的實例並返回它。 –