我正在为荷兰的游泳运动员建立一个包含比赛、俱乐部、结果和更多信息的数据库。由于我收到的数据发生了一些变化,我遇到了我正在阅读的 XML 文件中重复值的问题。
这是导致问题的 XML 文件的一部分:
<LENEX version="3.0">
<MEETS>
<MEET name="Speedowedstrijd 2012 - 2013 deel 1">
<CLUB name="AZVD" type="CLUB" nation="NED" region="08" code="08-004">
<OFFICIALS>
<OFFICIAL nation="NED" gender="M" officialid="2329" lastname="xx">
<CONTACT email="xx" phone="xx" country="NL" />
</OFFICIAL>
</OFFICIALS>
</CLUB>
<CLUB name="A.Z.V.D." type="CLUB" nation="NED" region="8" code="08-004">
<ATHLETES>
<ATHLETE nation="NED" gender="M" athleteid="2358" license="xx" lastname="xx">
<RESULTS>
<RESULT eventid="1167" resultid="2359" swimtime="00:03:09.69">
<SPLITS>
<SPLIT distance="50" swimtime="00:00:40.71"/>
<SPLIT distance="100" swimtime="00:01:30.71"/>
</SPLITS>
</RESULT>
</RESULTS>
</ATHLETE>
</ATHLETES>
</CLUB>
</MEET>
</MEETS>
</LENEX>
现在读取 xml 文件不是问题,使用 XDocument 我得到所有节点、子节点等。但是,当我将值写入我的数据库时,我在 Club_Meet 表上得到一个 keyconstraint 错误。该表包含俱乐部表和会议表之间的链接,并且每个组合必须是唯一的。由于上面示例中的两个俱乐部都指向我的数据库中的同一个俱乐部(唯一代码 = 08-004,我试图将相同的值写入数据库两次,从而导致错误。
所以我想做的是当我浏览 xml 文件并找到一个俱乐部时:检查这个俱乐部之前是否已经在这个 XML 中找到,如果是,则将子节点挂在第一个俱乐部节点下。此操作的结果应该是(内部):
<LENEX version="3.0">
<MEETS>
<MEET name="Speedowedstrijd 2012 - 2013 deel 1">
<CLUB name="AZVD" type="CLUB" nation="NED" region="08" code="08-004">
<OFFICIALS>
<OFFICIAL nation="NED" gender="M" officialid="2329" lastname="xx">
<CONTACT email="xx" phone="xx" country="NL" />
</OFFICIAL>
</OFFICIALS>
<ATHLETES>
<ATHLETE nation="NED" gender="M" athleteid="2358" license="xx" lastname="xx">
<RESULTS>
<RESULT eventid="1167" resultid="2359" swimtime="00:03:09.69">
<SPLITS>
<SPLIT distance="50" swimtime="00:00:40.71"/>
<SPLIT distance="100" swimtime="00:01:30.71"/>
</SPLITS>
</RESULT>
</RESULTS>
</ATHLETE>
</ATHLETES>
</CLUB>
</MEET>
</MEETS>
</LENEX>
请注意,第二个俱乐部节点<CLUB name="A.Z.V.D." type="CLUB" nation="NED" region="8" code="08-004">
已完全删除,我不需要该节点的任何内容。如何将子节点从一个俱乐部移动到另一个俱乐部并删除空俱乐部?谁能指出我正确的方向?
(希望这一切都有意义....)