2013-01-19 91 views
1

我的任務是從XML文件中繪製一個xml樹。我設法使用openDialog組件打開一個xml文件,現在我有一個saveDialog組件選擇要寫入的文件。現在,我必須想出一種算法,會:給定一個輸入XML文件,繪製其樹形結構

<Videos> 
    <Video> 
     <Title>The Distinguished Gentleman</Title> 
     <Director>Jonathan Lynn</Director> 
     <Actors> 
      <Actor>Eddie Murphy</Actor> 
      <Actor>Lane Smith</Actor> 
      <Actor>Sheryl Lee Ralph</Actor> 
      <Actor>Joe Don Baker</Actor> 
     </Actors> 
     <Length>112 Minutes</Length> 
     <Format>DVD</Format> 
     <Rating>R</Rating> 
    </Video> 
     <Video> 
     <Title>Her Alibi</Title> 
     <Director>Bruce Beresford</Director> 
     <Length>94 Mins</Length> 
     <Format>DVD</Format> 
     <Rating>PG-13</Rating> 
     </Video> 
    </Videos> 

因此,這將是:

<Videos> 
    ---<Video> 
    -------<Title> 
    -------<Director> 
    -------<Actors> 
    --------------<Actor> 
    -------<Length> 
    -------<Format> 
    -------<Rating> 

我認爲這將是在foreach語句:

XDocument xdoc = XDocument.Load(pathToXML); 
    foreach (var element in XML.Descendants) 
    { 
     //code here ?? 

    } ?? 

是的,我知道那。但我有問題如何選擇只有一個孩子節點(沒有這個方法)。我有類似的東西,但它仍然列出了所有的元素,不僅結構:

public string GetOutline(int indentLevel, XElement element) 
    { 
     StringBuilder result = new StringBuilder(); 


     result = result.AppendLine(new string('-', indentLevel * 2) + element.Name); 

     foreach (var childElement in element.Elements()) 

     { 
      result.Append(GetOutline(indentLevel + 3, childElement)); 
     } 

     return result.ToString(); 
+3

有什麼我們可以爲你做的嗎? – vanneto

+0

買我一輛保時捷;)?,我試圖想出來,但我是一個初學者,而不是流利的這個還沒有 – Peter

+0

[最後LINQ to XML遞歸查看元素](http:// stackoverflow。 com/questions/14423996/finally-linq-to-xml-recursive-viewing-of-elements) –

回答

2

遞歸訪問的XElement樹中的節點。爲每個元素寫入元素名稱。每次訪問子節點時都會增加縮進量,以便知道要寫入多少個「 - 」字符。

+0

是的,我知道。但我有問題如何選擇只有一個孩子節點(沒有這個方法)。我有類似的東西,但它仍然列出所有元素不僅結構: – Peter

+0

是的,我知道這一點。但我有問題如何選擇只有一個孩子節點(沒有這個方法)。我有類似的東西,但它仍然列出了所有元素,而不僅僅是結構。你可以看看嗎? – Peter

+0

'foreach(currentElement.Children中的var元素)'有什麼問題''。你有'使用System.Linq;'得到所有的擴展方法嗎?不知道爲什麼你需要一個,如果有很多,而且從多箇中選擇一個的標準是什麼。我雖然想甩掉整棵樹。 – Pawel