2010-05-19 63 views
0

你有沒有曾經挖過一個洞但你現在這麼深的日子裏唯一的選擇是繼續挖掘,看看你到哪裏出來嗎? 我以爲只是在我正在寫的使用LINQ to XML的最新組件中發出咯咯笑聲,因爲那時我看到了所有的hooplah。LINQ to XML,按照正確的順序檢索rigt節點

問題:我正在生成一個XML樹來表示圖上一系列的「集合」,每個系列都可以讓孩子成爲系列中的一個子節點,意味着這一系列要點(將被繪製)基於在父系列。因此,我創建了我的XML作爲規則集,然後將其傳遞給「應該」遍歷樹並按照該順序繪製的繪圖例程,即沒有孩子在父級之前呈現。

我的XML以編程方式創建。一個例子是這樣的(不是100%肯定,我這樣做的權利要麼)

<Chart> 
    <Chart_Config> 
    <Color Color="white" /> 
    <Panels Panel="1" /> 
    </Chart_Config> 
    <Series ID="0"> 
    <Name>1154.close</Name> 
    <ID>0</ID> 
    <IndID>-1</IndID> 
    <PID>0</PID> 
    <iType>0</iType> 
    <Parent>0</Parent> 
    <Series ID="1"> 
     <Name>1.Indicator</Name> 
     <ID>1</ID> 
     <IndID>0</IndID> 
     <PID>0</PID> 
     <iType>0</iType> 
     <Parent>1154.close</Parent> 
    </Series> 
    <Series ID="2"> 
     <Name>2.Indicator</Name> 
     <ID>2</ID> 
     <IndID>0</IndID> 
     <PID>0</PID> 
     <iType>0</iType> 
     <Parent>1154.close</Parent> 
    </Series> 
    <Series ID="3"> 
     <Name>3.Indicator</Name> 
     <ID>3</ID> 
     <IndID>0</IndID> 
     <PID>0</PID> 
     <iType>0</iType> 
     <Parent>1154.close</Parent> 
    </Series> 
    </Series> 
</Chart> 

上面的XML是有點躲閃,但關鍵是在這種情況下,我有1系列(ID = 0),有3系列爲兒童,因此3系列基於ID = 0系列。

問題是,我必須使用LINQ命令才能使所有<series>節點進入Ie.從根到葉子。

該代碼我只能得到第一個系列節點而不是它的孩子我不能讓我的頭繞過這個LINQ語法或概念。

 var result = from e in ChartRule.Elements("Series") 
        select e; 

任何幫助表示讚賞我希望這是很簡單的,如果你有在所有;-)

+0

我認爲你的問題有點不清楚。一個系列是否包含一個圖形的所有數據點?你能給我們一個例子嗎?數據訂單是一個問題嗎? – ChrisBD 2010-05-19 07:55:13

+0

我改變了原來的一點問題(希望它稍微指向一些)我試圖創建一個代表圖表上一系列點的樹,並且XML圖層決定了後續系列繪製的順序。注意XML是驅動我開始繪製系列的順序的表示,並且確保父項可用(即已經繪製),因此我可以使用它的數據來繪製序列中的下一個。 – snark 2010-05-19 08:17:49

回答

0

後裔():返回descendan的過濾集合t文檔或元素的元素,按文檔順序。集合中只包含具有匹配XName的元素。

這就是你需要的,正如mamoo指出的那樣。

我寧願把它寫這樣的:

from e in ChartRule.Descendants() 
        .Where(x => x.Name.LocalName == "Series") 
        select e 

這將避免命名空間衝突的情況下,你會從例如web服務得到這個數據。

1

任何線索,如果你需要得到所有系列的元素,你可以使用後代(),這相當於「//系列」 XPath表達式:

from e in ChartRule.Descendants("Series") 
        select e 

然後你可以檢查編程父的數據...

+0

這樣做的技巧..謝謝。 – snark 2010-05-20 02:32:17