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

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

作成日: 更新日:

基本的な使い方

C14Nメソッドは、DOMNodeクラスに属し、XML文書を標準的な形式に正規化する処理を実行するメソッドです。このメソッドは、XML文書の内容は変えずに、その表現形式を一意に整える「XML正規化」を行います。

具体的には、属性の順序、名前空間の宣言、空白文字の扱いなど、見た目には同じでも細部が異なる可能性のある要素を統一し、常に同じ内容のXMLからは同じ文字列が生成されるようにします。この機能は、XMLデジタル署名やXML暗号化など、XML文書の同一性を厳密に検証したり、安全に扱ったりする必要がある場面で特に重要です。

正規化の際には、排他的なルール適用、コメントを含めるか否か、特定のノードのみを対象にするかといったオプションを指定できます。実行後は、正規化されたXML文書を表す文字列を返します。これにより、XML文書の信頼性と互換性が向上し、異なるシステム間でのデータ連携が確実なものになります。

構文(syntax)

1<?php
2$domNode = new DOMDocument(); // DOMNodeを継承したオブジェクトの例
3$c14nResult = $domNode->C14N();
4?>

引数(parameters)

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

PHP:

  • bool $exclusive = false: 正規化に排他モードを使用するかどうかを指定します。true の場合、属性の正規化は子要素の属性のみに適用されます。
  • bool $with_comments = false: 正規化にコメントを含めるかどうかを指定します。true の場合、コメントも正規化されます。
  • ?array $xpath = null: 正規化に含めるノードを XPath 式で指定します。指定しない場合は、現在のノードのすべての子孫が対象となります。
  • ?array $ns_prefixes = null: 正規化に使用する名前空間プレフィックスの配列を指定します。

戻り値(return)

string|false

DOMNode::C14Nメソッドは、XMLノードとその子孫を正規化(CANONICAL XML)した文字列を返します。正規化に失敗した場合はfalseを返します。

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