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

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

作成日: 更新日:

基本的な使い方

C14Nメソッドは、DOMノードを正規化されたXML形式で出力するメソッドです。CharacterDataクラス(Text, Comment, CDATASectionなど)のノードに対して使用できます。C14NはCanonical XMLの略で、XML文書を特定の規則に従って標準化することで、内容が等価な文書を常に同じバイト列で表現できるようにします。これにより、XML文書の比較やデジタル署名の検証などが容易になります。

このメソッドは、ノード自身を含むサブツリー全体を正規化して出力します。出力形式は、W3C勧告のCanonical XML Version 1.0に準拠します。正規化処理では、属性の順序のソート、名前空間の明示的な宣言、不要な空白の削除などが行われます。

C14Nメソッドを使用することで、XML文書の構造や内容が同じであっても、属性の順序や空白の有無などによって異なるバイト列になってしまう問題を解決できます。システム間でXMLデータを交換する際や、XML文書を長期保存する際に、データの整合性を保つために非常に有効です。

引数として、排他的C14N、コメントの保持、プレフィックスリストなどを指定することで、より詳細な正規化処理を制御できます。これらの引数を適切に設定することで、特定の要件に合わせたXMLの正規化を行うことができます。C14Nメソッドは、XMLデータを扱う様々なシステムにおいて、データの標準化と整合性維持に貢献します。

構文(syntax)

1public Dom\CharacterData::C14N(string $exclusive = "", bool $withComments = true, ?array $nodes = null, ?string $namespacePrefix = null): bool

引数(parameters)

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

  • bool $exclusive = false: trueに設定すると、要素の属性のみを正規化します。
  • bool $with_comments = false: trueに設定すると、コメントノードも正規化対象に含めます。
  • ?array $xpath = null: 正規化するノードをXPathクエリで指定します。
  • ?array $ns_prefixes = null: 名前空間のプレフィックスを配列で指定します。

戻り値(return)

string|false

このメソッドは、指定されたキャラクターデータを正規化(CANONICALIZE)した結果を文字列として返します。正規化に失敗した場合は false を返します。

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