1

我有以下 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

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

4

2 回答 2

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();
于 2012-09-17T12:41:38.520 回答
1

这是一个想法:

  1. 解析 XML 文件并为每个ticket迭代subject获取value每个<field-id>12345</field-id>

  2. subject使用as 键和值填充字典中的所有数据value,如果找不到,请将其留空

于 2012-09-17T12:41:45.493 回答