【发布时间】:2020-12-01 16:23:25
【问题描述】:
我有一个嵌套的值集合(ID 和名称),它们存储为XML。我想将这个XML 转换为单个数据表,同时保持父子关系。
<Apartment id="1A" name="Apartment 1A">
<ApartmentComponent id="300" name="Living Room" />
<ApartmentComponent id="301" name="Bathroom">
<ApartmentComponent id="2698" name="Tub" />
<ApartmentComponent id="8204" name="Sink" />
</ApartmentComponent>
</Apartment>
<Apartment id="2A" name="Apartment 2A">
<ApartmentComponent id="302" name="Dining Room">
<ApartmentComponent id="2635" name="Table" />
<ApartmentComponent id="2746" name="Cabinet" />
</ApartmentComponent>
<ApartmentComponent id="301" name="Bathroom">
<ApartmentComponent id="8204" name="Sink">
<ApartmentComponent id="56352" name="Drain Plug" />
</ApartmentComponent>
</ApartmentComponent>
</Apartment>
生成的表格如下所示...
+-------+--------------+-----------+--------------+
| ID | Value | Parent ID | Parent Value |
+-------+--------------+-----------+--------------+
| 1A | Apartment 1A | | |
+-------+--------------+-----------+--------------+
| 300 | Living Room | 1A | Apartment 1A |
+-------+--------------+-----------+--------------+
| 301 | Bathroom | 1A | Apartment 1A |
+-------+--------------+-----------+--------------+
| 2698 | Tub | 301 | Bathroom |
+-------+--------------+-----------+--------------+
| 8204 | Sink | 301 | Bathroom |
+-------+--------------+-----------+--------------+
| 2A | Apartment 2A | | |
+-------+--------------+-----------+--------------+
| 302 | Dining Room | 2A | Apartment 2A |
+-------+--------------+-----------+--------------+
| 2635 | Table | 302 | Dining Room |
+-------+--------------+-----------+--------------+
| 2746 | Cabinet | 302 | Dining Room |
+-------+--------------+-----------+--------------+
| 301 | Bathroom | 2A | Apartment 2A |
+-------+--------------+-----------+--------------+
| 8204 | Sink | 301 | Bathroom |
+-------+--------------+-----------+--------------+
| 56352 | Drain Plug | 8204 | Sink |
+-------+--------------+-----------+--------------+
我通常会从使用XDocument 解析XML 开始。这会给我一个可以使用LINQ 查询的集合。但是我不确定如何将结果集合解析为平面表结构。我需要使用递归函数吗?
【问题讨论】:
标签: c# linq datatable linq-to-xml