RSS/AtomフィードXMLからJSONへの変換
RSSおよびAtom XMLフィードをJSON形式に変換する方法。フィード構造、チャンネルメタデータ、アイテムパース、説明文のCDATA、JSON Feed出力の構築を解説します。
Real-World
詳細な説明
RSSとAtomはブログ、ニュースサイト、ポッドキャストで使用されるXMLベースのシンジケーション形式です。フィードリーダー、アグリゲーター、モダンWebアプリでのフィードコンテンツ表示を構築する際に、JSONへの変換がよく行われます。
RSS 2.0フィード:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>DevToolbox Blog</title>
<link>https://www.dev-toolbox.tech/blog</link>
<description>Developer tools and tips</description>
<item>
<title>Understanding JSON Schema</title>
<link>https://www.dev-toolbox.tech/blog/json-schema</link>
<pubDate>Mon, 15 Jan 2024 09:00:00 GMT</pubDate>
<description><![CDATA[
<p>JSON Schema is a powerful tool for validating...</p>
]]></description>
</item>
</channel>
</rss>
JSONに変換すると:
{
"title": "DevToolbox Blog",
"link": "https://www.dev-toolbox.tech/blog",
"description": "Developer tools and tips",
"items": [
{
"title": "Understanding JSON Schema",
"link": "https://www.dev-toolbox.tech/blog/json-schema",
"pubDate": "Mon, 15 Jan 2024 09:00:00 GMT",
"description": "<p>JSON Schema is a powerful tool for validating...</p>"
}
]
}
主な変換の考慮事項:
- CDATA説明文はプレーン文字列になる。 CDATAラッパーが除去され、HTMLコンテンツはJSON文字列値として保持されます。
- 繰り返される
<item>要素はJSON配列になる。 繰り返される兄弟要素の標準的な処理です。 - 日付形式。 RSSはRFC 822日付を使用します。JSON出力にはISO 8601への正規化を検討してください。
- チャンネルメタデータはフラット化される。
<channel>ラッパーは除去され、子要素がトップレベルに昇格することが多いです。
RSS vs Atom vs JSON Feed:
| 形式 | ベース | 典型的な用途 |
|---|---|---|
| RSS 2.0 | XML | ブログ、ポッドキャスト |
| Atom 1.0 | XML | より構造化、IETF標準 |
| JSON Feed | JSON | モダンな代替、ネイティブJSON |
JSON Feed仕様はフィード用の標準JSON構造を提供しており、RSS/AtomをJSONに変換する際の理想的なターゲット形式です。
ユースケース
複数の技術ブログからRSSフィードを取得し、統一されたJSON構造に変換し、Reactベースのニュースリーダーアプリケーションで結合されたフィードをレンダリングするフィードアグリゲーターを構築する場合。