如何将每个XML节点转换为Excel行

时间:2014-10-29 09:26:31

标签: xml excel

我一直在尝试将每个xml节点转换为Excel行,以包含所有数据,包括具有子节点的节点。我已经下载了XML编辑器,并尝试将子节点移出父节点,但它并没有为整个XML做这件事。我还尝试创建和添加XSD,但它清除了我的所有XML内容。

任何帮助都会受到高度赞赏,因为我已经走到了尽头!这是我试图转换为Excel的XML。我删除了大多数game_action节点,并留下了一些例子。因此,当我将此XML加载到Excel中时,我可以和我一样,Starting_player名称,match_player_guid和数字不与video_time,video_time_start等位于同一行中

<game_actions>
<game_action>
  <video_time>159.113</video_time>
  <video_time_start>149.113</video_time_start>
  <video_time_end>169.113</video_time_end>
  <game_time>159.113</game_time>
  <color>0x0000ff</color>
  <starting_player>
    <name>G. Aburjania</name>
    <match_player_guid>ACA150E6-2DA9-CB29-7963-52D514A5B265</match_player_guid>
    <number>8</number>
  </starting_player>
  <ending_player>
    <name>C. Maraggos</name>
    <match_player_guid>532EDB0E-809A-64FD-EAD5-52D514A5C43D</match_player_guid>
    <number>6</number>
  </ending_player>
  <starting_position>
    <x>496</x>
    <y>560</y>
    <zone>6</zone>
  </starting_position>
  <ending_position>
    <x>415</x>
    <y>567</y>
    <zone>6</zone>
  </ending_position>
  <team>
    <name>Anorthosis FC</name>
    <team_guid>bcd1ae4c-4c2d-4c92-978d-6883595d487d</team_guid>
  </team>
  <action>
    <action_id>83</action_id>
    <name>Pass</name>
  </action>
  <direction>right</direction>
  <comments/>
  <uid>39EA2490-FB83-3750-5B65-55D0F5372DE7</uid>
</game_action>
<game_action>
  <video_time>165.866</video_time>
  <video_time_start>155.866</video_time_start>
  <video_time_end>175.866</video_time_end>
  <game_time>165.866</game_time>
  <color>0xcc0000</color>
  <starting_player>
    <name>C. Maraggos</name>
    <match_player_guid>532EDB0E-809A-64FD-EAD5-52D514A5C43D</match_player_guid>
    <number>6</number>
  </starting_player>
  <starting_position>
    <x>402</x>
    <y>585</y>
    <zone>6</zone>
  </starting_position>
  <ending_position>
    <x>675</x>
    <y>44</y>
    <zone>6</zone>
  </ending_position>
  <team>
    <name>Anorthosis FC</name>
    <team_guid>bcd1ae4c-4c2d-4c92-978d-6883595d487d</team_guid>
  </team>
  <action>
    <action_id>88</action_id>
    <name>Attack</name>
  </action>
  <action>
    <action_id>103</action_id>
    <name>Wrong Pass</name>
  </action>
  <direction>right</direction>
  <comments/>
  <uid>C7320CA0-BD4E-2D1B-C4A9-55D14E959346</uid>
</game_action>  </game_actions>

1 个答案:

答案 0 :(得分:0)

我可以建议3个选项

  1. 来自XML数据导入 - 数据功能区中的按钮。

  2. 尝试在VBA中使用MSXML2.DOMDocument对象。

  3. 尝试使用正则表达式(我的偏好始终如此),例如"<game_action>((?:.|\n)*?)</game_action>"为您提供所有game_action标记。然后递归地从内部获取其他标签。我使用UDF函数here创建了一个加载项。你可以使用它来获取像这样=GetRegex(CELL_WITH_XML,"<video_time>((?:.|\n)*?)</video_time>";0)的标记内容,可以更改最后一个参数以获取下一个标记