【PHP8.x】C14Nメソッドの使い方
C14Nメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
C14Nメソッドは、DOM NotationノードをCanonical XML形式にシリアライズするメソッドです。Canonical XML (C14N) は、XMLドキュメントを正規化するための標準規格であり、異なるシステム間でのXMLデータの比較や検証を容易にすることを目的としています。
このメソッドは、Dom\Notationオブジェクトに対して呼び出され、そのノード以下のサブツリーをC14N形式の文字列として返します。C14N形式は、XMLドキュメントの属性の順序、名前空間の宣言、エンティティ参照など、XMLドキュメントの意味を変えずに表現形式を統一するものです。
具体的には、C14Nメソッドは以下の処理を行います。
- コメントの削除(オプションで保持可能)
- 属性のソート
- 名前空間の明示的な宣言
- エンティティ参照の解決
- 文字コードの正規化
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 を返します。