1

我是 Erlang 的新手,正在尝试将 XML 文档解析为记录。我尝试了各种方法(xmerl_scan/xpath),但因为我不知道从哪里开始而被画到角落里。

我已经阅读了有关该主题的三本书,并花了几个小时在谷歌上搜索该主题,但我认为我一定遗漏了一些明显的东西。

必须有一种简单的方法来使用某种模式匹配访问每个节点并生成匹配列表。

这是输入...

<Sports>
<Sport> SportId="1" SportName="Cricket"> 
<League LeagueId="1" LeagueName="Test Match"> 
<Meeting MeetingId="1" MeetingName="Test Match"/> 
</League> 
<League LeagueId="2" LeagueName="One Day International"> 
<Meeting MeetingId="1" MeetingName="One Day International Match""/> 
<Meeting MeetingId="2" MeetingName="One Day International Series"/> 
</League>
<League LeagueId="3" LeagueName="T20 World Cup"> 
<Meeting MeetingId="1" MeetingName="T20 World Cup Futures"/> 
</League> 
</Sport> 
<Sport SportId="7" SportName="Golf"> 
<League LeagueId="1" LeagueName="PGA Tour"> 
<Meeting MeetingId="1" MeetingName="St Jude Classic"/> 
<Meeting MeetingId="2" MeetingName="US Open"/> 
</League> 
<League LeagueId="22" LeagueName="European Tour"> 
<Meeting MeetingId="100" MeetingName="Nordea Masters"/> 
<Meeting MeetingId="101" MeetingName="Nordea Masters Tournament HH"/> 
<Meeting MeetingId="102" MeetingName="Nordea Masters Top Aussie"/> 
<Meeting MeetingId="107" MeetingName="Nordea Masters Handicap"/> 
<Meeting MeetingId="110" MeetingName="Nordea Masters R1 3 Balls"/> 
</League> 
<League LeagueId="34" LeagueName="Ryder Cup"> 
<Meeting MeetingId="1" MeetingName="Ryder Cup 2012"/> 
</League> 
</Sport> 
</Sports> 

这是所需的输出...

[{SportId,SportName,LeagueId,LeagueName,MeetingId,MeetingName}] 

不一定需要一个固定的答案,但只要朝着正确的方向推动就会很有用,所以我可以自己做一些进一步的研究。

我使用 mochiweb_html:parse 在特定节点中搜索特定信息,但在上述实例中,我需要从多个节点中提取信息。

谢谢

4

1 回答 1

1

你有没有调查过erlsom

IMO 比 xmerl 更易于使用。使用 erlsom,您可以从 XSD 模式生成记录定义。记录定义映射来自模式的类型(加上一些额外的信息)。使用记录模式匹配很简单。您可以在此处找到更多信息。

于 2012-06-10T17:25:27.893 回答