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>"
    }
  ]
}

主な変換の考慮事項:

  1. CDATA説明文はプレーン文字列になる。 CDATAラッパーが除去され、HTMLコンテンツはJSON文字列値として保持されます。
  2. 繰り返される <item> 要素はJSON配列になる。 繰り返される兄弟要素の標準的な処理です。
  3. 日付形式。 RSSはRFC 822日付を使用します。JSON出力にはISO 8601への正規化を検討してください。
  4. チャンネルメタデータはフラット化される。 <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ベースのニュースリーダーアプリケーションで結合されたフィードをレンダリングするフィードアグリゲーターを構築する場合。

試してみる — JSON ↔ XML Converter

フルツールを開く