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のキーの値として使用されます。