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

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

作成日: 更新日:

基本的な使い方

C14NFileメソッドは、PHPのDom\Documentクラスに属し、現在ロードされているXMLドキュメントをCanonical XML(正規化XML)形式で指定されたファイルに保存する役割を実行するメソッドです。Canonical XMLとは、XMLドキュメントの表現を標準的な形式に統一するプロセスを指します。これにより、見た目上の差異(例えば、空白の数や属性の順序など)があっても、XMLドキュメントのセマンティックな内容が同一であれば、それらを等しいものとして扱うことが可能になります。これは特に、XMLデータの内容の真正性を保証する必要があるデジタル署名のようなセキュリティが求められる場面で、その重要性を発揮します。

このメソッドは、第一引数にCanonical XMLの出力先となるファイルパスを文字列で受け取ります。追加のオプションとして、第二引数で排他的Canonical XMLを適用するかどうか、第三引数でXMLコメントを含めるかどうかを真偽値で指定できます。これらのオプションは、デフォルトでは無効(false)に設定されています。

処理が正常に完了した場合、メソッドはファイルに書き込まれたバイト数を整数で返します。ファイルへの書き込みに失敗したり、その他のエラーが発生した場合はfalseを返します。そのため、このメソッドを使用する際は、戻り値を適切にチェックし、エラーハンドリングを行うことが、堅牢なアプリケーション開発において非常に重要です。

構文(syntax)

1<?php
2$document = new DOM\Document();
3$document->loadXML('<root/>');
4
5$document->C14NFile('output.xml');

引数(parameters)

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

  • string $uri: 標準化されたXMLドキュメントを書き出すファイルパスを指定する文字列
  • bool $exclusive = false: 排他的な名前空間の正規化を行うかどうかを指定する真偽値(デフォルトはfalse)
  • bool $withComments = false: コメントを含めて正規化するかどうかを指定する真偽値(デフォルトはfalse)
  • ?array $xpath = null: XPath式を指定し、指定されたXPathにマッチするノードのみを正規化する場合に使用する配列(デフォルトはnull)
  • ?array $nsPrefixes = null: 名前空間のプレフィックスを指定し、指定されたプレフィックスの名前空間のみを正規化する場合に使用する配列(デフォルトはnull)

戻り値(return)

int|false

このメソッドは、XML文書を正規化してファイルに書き出す操作の成功・失敗を示す整数値を返します。成功した場合はtrue(実際には1)を、失敗した場合はfalseを返します。