1

私はErlangを初めて使用し、XMLドキュメントをレコードに解析しようとしています。さまざまな方法(xmerl_scan / xpath)を試しましたが、どこから始めればよいかわからないため、隅に塗りつぶされてしまいます。

私はこの主題について3冊の本を読み、数時間かけて主題をグーグルで調べましたが、明らかな何かが欠けているに違いないと思います。

ある種のパターンマッチングを使用して各ノードにアクセスし、一致のリストを生成する簡単な方法が必要です。

これは入力です...

<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

あなたはもうエルサムを調べましたか?

xmerl よりも使いやすいです。erlsom を使用すると、XSD スキーマからレコード定義を生成できます。レコード定義は、スキーマからの型をマップします (およびいくつかの追加情報)。レコードのパターン マッチングは簡単に使用できます。詳細については、こちらをご覧ください

于 2012-06-10T17:25:27.893 に答える