2013-06-24 52 views
0

我需要我的工作是這樣C#XML轉換成數據網格不同程度的孩子

<jobpost id='01'> 
    <candidate id='0000079'> 
     <firstName>AAAA</firstName> 
     <lastName>BBBB</lastName> 
     <age>32</age> 
     <salaryoff>37000</salaryoff> 
     <exp>C</exp> 
     <cat> 
      <award>5</award> 
      <hst>5</hst> 
      <previous>7</previous> 
      <flex>3</flex> 
      <travel>4</travel> 
     </cat> 
    </candidate> 
    <candidate id='0000072'> 
     <firstName>CCCCC</firstName> 
     <lastName>DDDDD</lastName> 
     <age>37</age> 
     <salaryoff>40000</salaryoff> 
     <exp>B</exp> 
     <cat> 
      <award>6</award> 
      <hst>5</hst> 
      <previous>6</previous> 
      <flex>2</flex> 
      <travel>3</travel> 
     </cat> 
    </candidate>   
</jobpost> 

和顯示XML在DataGrid以這種格式

name last age exp awa hst pre fle tra salaryoff 

AAAA BBBB 32 C 5 5 7 3 4 37000 

CCCCC DDDDD 37 B 6 5 6 2 3 40000 

我已經試過類似的財產以後這

XmlReader xmlFile = XmlReader.Create(my_path + "jobpost.xml", new XmlReaderSettings()); 
DataSet dataSet = new DataSet(); 
dataSet.ReadXml(xmlFile); 
candidati.DataSource = dataSet; 
candidati.DataMember = "cat"; 
xmlFile.Close(); 

但我只設法得到信息的一個部分,因爲我需要

awa hst pre fle tra 

5 5 7 3 4 

6 5 6 2 3 

candidati.DataMember = "candidate"; 


name last age exp salary 
AAAA BBBB 32 C 37000 
CCCCC DDDDD 37 B 40000 

在循環:)和導航我想知道的循環enterin如果有某種方式來組織數據,因爲我有一些結構需要,我不知道,前自從現在我沒有發現。

THX如果u已經抵達下來:)

回答

0

你可以嘗試壓扁使用LINQ的結果,然後綁定結果的DataGrid

編輯

我相當新的LINQ to XML中但是我明白這個技巧。

XDocument doc = XDocument.Load(@"XMLFile.xml"); 

      var query = from c in doc.Root.Descendants("candidate") 
         let cat = c.Element("cat") 
         select new 
         { 
          FirstName = c.Element("firstName").Value, 
          LastName = c.Element("lastName").Value, 
          Age = c.Element("age").Value, 
          Salary = c.Element("salaryoff").Value, 
          Exp = c.Element("exp").Value, 
          Award = cat.Element("award").Value, 
          Hst = cat.Element("hst").Value, 
          Previous = cat.Element("previous").Value, 
          Flex = cat.Element("flex").Value, 
          Travel = cat.Element("travel").Value, 
         }; 
      dgv.DataSource = query.ToList(); 
+0

Thx!我會嘗試這種方式! – ontheroad

+0

我一直過於樂觀。我認爲LINQ更容易。任何建議任何人?在意思是我試圖收取數據集中的所有xml,並將其視爲正常分貝。 BTw我仍然開放,建議並再次向大家。 – ontheroad

+0

@ontheroad嘗試我編輯的答案 –