【PHP8.x】C14Nメソッドの使い方

C14Nメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

C14Nメソッドは、DOM NotationノードをCanonical XML形式にシリアライズするメソッドです。Canonical XML (C14N) は、XMLドキュメントを正規化するための標準規格であり、異なるシステム間でのXMLデータの比較や検証を容易にすることを目的としています。

このメソッドは、Dom\Notationオブジェクトに対して呼び出され、そのノード以下のサブツリーをC14N形式の文字列として返します。C14N形式は、XMLドキュメントの属性の順序、名前空間の宣言、エンティティ参照など、XMLドキュメントの意味を変えずに表現形式を統一するものです。

具体的には、C14Nメソッドは以下の処理を行います。

  1. コメントの削除(オプションで保持可能)
  2. 属性のソート
  3. 名前空間の明示的な宣言
  4. エンティティ参照の解決
  5. 文字コードの正規化

C14Nメソッドは、XMLデータの整合性を確保する必要がある場合や、XML署名などのセキュリティ関連の処理を行う場合に特に有用です。たとえば、同じ内容のXMLドキュメントであっても、作成された環境やツールによって表現形式が異なる場合があります。C14Nを適用することで、表現形式の違いを吸収し、内容に基づいて一意に識別できるようになります。これにより、データの比較や検証がより正確に行えるようになります。

Dom\NotationクラスのC14Nメソッドは、このようなCanonical XML形式への変換処理を簡単に行うための機能を提供します。

構文(syntax)

1<?php
2$domNotationInstance = null; // Dom\Notationインスタンスを保持する変数
3$exclusiveCanonicalization = false; // 排他的正規化のフラグ (bool)
4$includeCommentsInOutput = true; // 出力にコメントを含めるかのフラグ (bool)
5
6$resultCanonicalXmlString = $domNotationInstance->C14N($exclusiveCanonicalization, $includeCommentsInOutput);

引数(parameters)

bool $exclusive = false, bool $with_comments = false, ?array $xpath = null, ?array $ns_prefixes = null

  • bool $exclusive = false: 排他的な正規化を行うかどうかを指定します。true の場合、要素のID属性は無視されます。
  • bool $with_comments = false: コメントノードを含めて正規化するかどうかを指定します。
  • ?array $xpath = null: 正規化の対象を絞り込むために使用するXPathクエリの配列。
  • ?array $ns_prefixes = null: 正規化の際に考慮する名前空間プレフィックスの配列。

戻り値(return)

string|false

C14N メソッドは、XML ノードを正規化された文字列として返します。正規化に失敗した場合は false を返します。

関連コンテンツ

関連プログラミング言語