嵌套XML到DataTable

时间:2012-09-17 12:34:31

标签: c# xml datatable nested zendesk

我有以下XML:

<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

我尝试了很多方法,但没有运气。 如果有人能给出一个好主意,请欣赏。 非常感谢你。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

这是一个想法:

  1. 解析XML文件并针对每个ticket subject进行迭代,并为每个value

  2. 获取<field-id>12345</field-id>
  3. 将词典中的所有数据填入subject作为键,value作为值,如果未找到则将其留空