ファイルを選択
  1. base64hub
  2. テキストツール
  3. XML を Base64 に

XML を Base64 に:XML 文書をエンコード

XML 文書を貼り付けると Base64 が得られます。文書の encoding 宣言に合った文字コードを選べば、受け取る側のパーサーが書いたとおりの文字を読めます。

無料 登録不要・制限なし ローカル アップロードなし 更新日 2026/10/27
入力 0 B出力 0 Bサイズ –

ブラウザ内で処理されます。このページがデータをどこかに送信することはできません – その根拠

XML を Base64 にエンコードする方法

  1. XML 文書を 入力 · テキスト に貼り付けるか、サンプル を押して小さな文書を読み込みます。
  2. 文字コード を XML 宣言に書かれたエンコードに合わせます。UTF-8 が選択済みで、ほとんどの文書ではこれで正解です。
  3. 出力 · Base64 から結果をコピーします。JSON や HTTP のフィールドでは 折り返し を「なし」のままにしてください。76 文字の行を受け付ける XML ベースのプロトコルもあります。
  4. ダウンロード で Base64 を base64.txt として保存します。

XML 宣言の後に <note> 要素が続くサンプルは、PD94bWwg で始まる文字列にエンコードされます。これは <?xml の Base64 です。宣言のある XML 文書はほぼすべてこう始まるので、エンコードされた XML は見分けやすいのです。Base64 を XML に で再びデコードできます。

文字コードを XML 宣言に合わせる

XML パーサーは、宣言の encoding 属性(またはバイトオーダーマーク)を見てバイト列の読み方を決めます。バイト列と宣言が食い違うと、受け取る側は書いたものとは違う文字を読むことになります。

文書ここで使った文字コードBase64パーサーが読む内容
<?xml version="1.0" encoding="ISO-8859-1"?><n>café</n>ISO-8859-1PD94bWwg...PjxuPmNhZuk8L24+café
同じ文書UTF-8PD94bWwg...PjxuPmNhZsOpPC9uPg==café

2 行目はシステム連携でよくあるバグです。テキストは UTF-8 で保存されているのに、宣言は Latin-1 のままになっています。ここで宣言どおりの文字コードを選ぶか、より望ましい方法として、宣言を UTF-8 に変えてどこでも UTF-8 を使ってください。

XML が Base64 で運ばれる場面

  • SOAP や REST の API。 JSON や XML のフィールドの中に XML 文書全体を受け取るもので、Base64 にすれば山括弧や引用符のエスケープが不要になります。電子インボイスや EDI のサービスでは、インボイス(たとえば UBL 文書)をこの方法で受け取ることがよくあります。
  • SAML シングルサインオン。 SAML レスポンスは XML 文書で、Base64 エンコードしてブラウザから POST されます。SAML デコーダー は SAMLResponse と SAMLRequest の値を XML に戻します。
  • 設定とシークレット。 環境変数や Kubernetes の Secret に保存する XML の設定ファイルは、1 行に収めるために Base64 にします。

文書がデジタル署名されている場合(SAML や多くの電子インボイスで使われる XML-DSig)は、受け取ったか生成したとおりのバイト列をエンコードしてください。XML の意味が同じでも、インデントのやり直し、改行コードの変更、エディターでの保存し直しで署名が無効になることがあります。

サイズと折り返し

Base64 は文書を約 33% 大きくします。XML はもともと冗長なので、大きな文書はエンコードの前に gzip することがよくあります。gzip と Base64 のツール で両方の手順を行えます。76 文字での 折り返し は、MIME ベースの転送や、xs:base64Binary の内容に対するほとんどの XML Schema バリデーターで受け付けられます。JSON ベースの API は通常、途切れのない 1 行を想定しています。

コードで XML を Base64 に

ファイルをバイト列として読んでそれをエンコードすれば、宣言とバイト列がずれることはありません。

import base64

with open("invoice.xml", "rb") as f:
    b64 = base64.b64encode(f.read()).decode("ascii")
// Node.js
const fs = require("fs");
const b64 = fs.readFileSync("invoice.xml").toString("base64");

Linux では base64 -w 0 invoice.xml で同じ 1 行が出力されます。大きなファイルのストリーム処理については Python での Base64 と Node.js での Base64 を参照してください。

よくある質問

XML ファイルを Base64 に変換するには?

上に XML を貼り付けて結果をコピーします。ファイルの場合は、テキストを打ち直すのではなく生のバイト列をエンコードしてください。Python なら base64.b64encode(open("doc.xml", "rb").read())、Linux なら base64 -w 0 doc.xml です。

XML にはどの文字コードを選べばよいですか?

XML 宣言にあるものです。<?xml version="1.0" encoding="UTF-8"?>、または encoding 属性がなければ、デフォルトの UTF-8 です。ISO-8859-1 や Windows-1252 と書かれていればそれを選ぶか、宣言を UTF-8 に変えてください。

エンコードする前に XML を整形し直してもよいですか?

正確なバイト列に依存するものがない場合に限ります。インデントを変えると Base64 も変わり、署名付きの XML(SAML アサーションや署名付きインボイス)では署名が無効になることがあります。

xs:base64Binary はどう関係しますか?

この XML Schema の型は逆のケースで、XML 要素の中に Base64 を入れるものです。SOAP メッセージやインボイスにファイルを埋め込むのに使われます。ファイルを Base64 に でファイルをエンコードし、結果を要素に貼り付けてください。