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

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

作成日: 更新日:

基本的な使い方

C14NFileメソッドは、DOMDocumentFragmentオブジェクトの内容をW3C勧告のCanonical XML (C14N) 形式に正規化し、その結果をファイルに保存するメソッドです。XMLの正規化とは、空白の扱い、属性の順序、文字参照などを統一的なルールで整形し、論理的に等価なXML文書が物理的にも同一のバイト表現となるように変換する処理を指します。この処理は、特にXMLデジタル署名などで文書の同一性を厳密に検証する際に不可欠です。第一引数には出力先のファイルパスを指定します。第二引数以降はオプションで、排他的正規化を行うかどうかの指定、コメントを出力に含めるかどうかの指定、正規化対象を絞り込むためのXPathクエリの配列、排他的正規化で用いる名前空間プレフィックスの配列などを設定できます。これにより、特定の要件に応じた正規化処理を柔軟に行うことが可能です。このメソッドは、処理が成功した場合にはファイルに書き込まれたバイト数を返し、失敗した場合にはfalseを返します。

構文(syntax)

1public DOMDocumentFragment::C14NFile(
2    string $filename,
3    bool $exclusive = false,
4    bool $withComments = false,
5    ?array $xpath = null,
6    bool $nsPrefixes = false
7): int|false

引数(parameters)

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

  • string $uri: C14N(Canonicalization)処理の対象となるXMLファイルのURI(Uniform Resource Identifier)を指定します。
  • bool $exclusive = false: 排他的(Exclusive)C14Nを使用するかどうかを指定します。デフォルトはfalse(無効)です。
  • bool $withComments = false: コメントノードを含めてC14N処理を行うかどうかを指定します。デフォルトはfalse(除外)です。
  • ?array $xpath = null: C14N処理の対象をXPath式で絞り込むための配列を指定します。デフォルトはnull(全ノード対象)です。
  • ?array $nsPrefixes = null: 名前空間のプレフィックスを明示的に指定するための配列を指定します。デフォルトはnull(自動検出)です。

戻り値(return)

int|false

このメソッドは、DOMDocumentFragmentを正規化してファイルに保存したバイト数を返します。失敗した場合はfalseを返します。

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