RSSとは?
ウェブサイトの更新情報(新しい記事、ニュース、ブログ投稿など)を配信するための技術で、ウェブサイト側が更新情報を「RSSフィード」という形式で配信します。
RSSのXMLをYAMLに変換する理由
XMLはタグが多くて冗長になりやすいですが、YAMLはインデントを使ってネスト構造を簡単に表現できるため、データを直感的に理解しやすくなります。
YAML形式はプログラムから扱いやすく、簡単にデータをパース(読み取る)したり操作したりすることができます。
XMLからYAMLへの変換の仕組み
XMLのデータ構造をYAML形式に変換する流れは次のようになります。
-
XMLの構造を理解する
XMLでは、親子関係やタグを使ってデータを表現します。例えば、RSSフィードでは<rss>,<channel>,<item>などのタグがあり、それぞれに属性や値が設定されています。 -
YAMLの基本構造にマッピングする
XMLタグはYAMLのキーに対応し、タグの属性や子要素はYAMLの値に対応します。YAMLでは、インデントでネスト構造を表現するため、XMLの階層構造がそのまま反映されます。
タグ名
(例:<title>) → YAMLのキー(例: title)
タグの値
(例:<title>媒体名</title>)→ YAMLの値(例: title: "媒体名")
タグの属性
(例:<enclosure url="..."/>)→ YAMLのキー・値ペア(例: enclosure: {url: "..."})
XMLの変換例とパラメータの意味
例として以下のようなXMLで解説
<rss version="2.0">
<channel>
<title>媒体名</title>
<link>https://example.com</link>
<description>ライフハックをお届けするサイトです</description>
<item>
<title>記事タイトル1</title>
<link>https://example.com/first-item</link>
<description>100均おすすめアイテム10選</description>
<enclosure url="https://example.com/images/first-item-image.jpg" type="image/jpeg" />
</item>
</channel>
</rss>
上記XMLをYAMLに変換すると次のようになります
RSSフィードのYAML形式(変換後)
rss:
version: "2.0"
channel:
title: "媒体名"
link: "https://example.com"
description: "ライフハックをお届けするサイトです"
items:
- title: "記事タイトル1"
link: "https://example.com/first-item"
description: "100均おすすめアイテム10選"
enclosure:
url: "https://example.com/images/first-item-image.jpg"
type: "image/jpeg"
rss: RSSフィード全体を表す最上位のキー
version: "2.0": このフィードがRSS 2.0仕様に準拠していることを示す
channel: フィード全体に関する情報を含む部分
title: フィードのタイトル
link: フィードに関連するウェブサイトのリンク
description: フィードの説明
items: フィードの個別アイテム(投稿や記事)をリスト形式で記述
アイテム内の情報
title: アイテムのタイトル
link: アイテムの詳細リンク
description: アイテムの説明
enclosure: アイテムに関連するメディアファイル(ここでは画像)
url: 画像のURL
type: 画像がJPEG形式であることを示す
変換のポイント
-
階層構造の保持: XMLのネストされたタグ(例えば、
<channel>,<item>など)は、YAMLではインデントで表現され、インデントによって親子関係を示します。 -
属性の処理: XMLのタグ属性(例えば url や type)は、YAMLではキーと値のペア(ハッシュ形式)として記述されます。
-
タグの値の変換: XMLのタグの値(例えば
<title>内の文字列)は、そのままYAMLのキーの値として使用されます。