2012-09-17 73 views
1

我有以下XML:嵌套XML來的DataTable

<tickets> 
    <ticket> 
      <subject>ABC</subject> 
      <entries-field> 
       <entry-field> 
        <field-id>12345</field-id> 
        <value>New</value> 
       </entry-field> 
      <entries-field> 
    <ticket> 
    <ticket> 
      <subject>DEF</subject> 
      <entries-field> 
       <entry-field> 
        <field-id>67890</field-id> 
        <value>category_cc</value> 
       </entry-field> 
       <entry-field> 
        <field-id>12345</field-id> 
        <value>Pending</value> 
       </entry-field> 
      <entries-field> 
    <ticket> 
    <ticket> 
      <subject>GHI</subject> 
    <ticket> 
</tickets> 

我需要把它轉換成C#數據表如下:

Subject   Status 
------------------------ 
ABC    New 
DEF    Pending 
GHI 

我嘗試了很多方法,但沒有運氣。 非常感謝,如果有人能給出一個好主意。 非常感謝。

回答

1

這裏有一個想法:

  1. 解析XML文件和遍歷每個ticketsubject,並得到value對於每一個<field-id>12345</field-id>

  2. 將字典中的所有數據填充爲subject作爲鍵和value的價值,如果沒有找到留空

1

假設你一起工作的真正的XML未損壞如上

XDocument xDoc = XDocument.Parse(xml); 
var result = xDoc.Descendants("ticket") 
       .Select(n => new 
        { 
         Subject = n.Element("subject").Value, 
         Status = (string)n.Descendants("value").LastOrDefault() 
        }) 
       .ToList(); 
+0

狀態似乎永諾是字段的值12345 – CloudyMarble

+0

@MeNoMore也許,OP應該清楚。 –