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

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

作成日: 更新日:

基本的な使い方

DOMCharacterData::C14Nメソッドは、ドキュメントを正規化されたXML形式で出力するメソッドです。具体的には、XMLドキュメントの部分木を、W3CのCanonical XML Version 1.1勧告に従ってシリアライズ(直列化)します。このメソッドを使用することで、XMLドキュメントを異なるシステム間で一貫性のある形式で共有したり、デジタル署名などのセキュリティ関連の処理を行う際に、ドキュメントの構造が変更されることによる問題を回避したりできます。

このメソッドは、DOMCharacterDataクラスに属しており、CharacterDataノード(例えば、テキストノードやコメントノード)から呼び出すことができます。CharacterDataノードから呼び出された場合、そのノード自体ではなく、そのノードを含むドキュメント全体が正規化されます。

C14Nメソッドは、オプションでいくつかのパラメータを受け取ることができ、これによって正規化の挙動を細かく制御できます。例えば、コメントを含めるかどうか、属性の順序を保持するかどうか、空白文字の処理方法などを指定できます。これらのオプションを使用することで、特定のニーズに合わせた正規化を行うことが可能になります。

正規化されたXMLは、文字列として返されます。エラーが発生した場合は、FALSEを返します。このメソッドは、XMLドキュメントの構造や内容をプログラムで操作し、他のシステムとの連携やデータ交換を行う場合に非常に有用です。システムエンジニアは、このメソッドを理解し、適切に使用することで、XMLベースのアプリケーションの信頼性と互換性を高めることができます。

構文(syntax)

1DOMCharacterData::C14N(bool $exclusive = false, bool $withComments = false, ?array $nodes = null, ?string $namespacePrefix = null) : string|false

引数(parameters)

bool $exclusive = false, bool $withComments = false, ?array $xpath = null, ?array $nsPrefixes = null

  • bool $exclusive = false: 排他的な正規化を行うかどうかを指定します。trueの場合、親ノードではなく、自身の子ノードのみが正規化されます。
  • bool $withComments = false: コメントノードを正規化に含めるかどうかを指定します。trueの場合、コメントノードも正規化されます。
  • ?array $xpath = null: 正規化の対象とするノードをXPath式で指定します。指定しない場合は、DOMCharacterDataノード全体が対象となります。
  • ?array $nsPrefixes = null: 名前空間のプレフィックスを配列で指定します。指定されたプレフィックスを持つ名前空間のみが正規化の対象となります。

戻り値(return)

string|bool

このメソッドは、指定されたノードとその子孫を正規化(canonicalize)した結果を文字列として返します。正規化に失敗した場合はfalseを返します。

【PHP8.x】C14Nメソッドの使い方 | いっしー@Webエンジニア