【PHP8.x】C14NFileメソッドの使い方
C14NFileメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
C14NFileメソッドは、DOMTextオブジェクトが表すXMLのテキストノードを正規化(Canonicalization)し、その結果を指定されたファイルに保存するメソッドです。正規化とは、XML文書の同じ意味を持つ表現を統一された標準形式に変換する処理を指します。この処理により、XML文書内の空白文字の扱いや属性の順序、名前空間の宣言方法といった細かな記述の違いが取り除かれ、XMLの内容が意図せず変更されていないかを確認する際に、一貫した比較を可能にします。
この機能は、特にXML署名やXML暗号化といったセキュリティ関連の技術において、文書の同一性を保証するために不可欠なステップとなります。C14NFileメソッドは、正規化されたXMLデータを出力するファイルパスを引数として受け取ります。メソッドが正常に処理を完了し、ファイルへの書き込みに成功した場合はブール値trueを返し、何らかの理由で失敗した場合はfalseを返します。
DOMTextクラスのインスタンスに対してこのメソッドを呼び出すことで、対象のテキストノードが含むコンテンツとその文脈が正規化され、その結果が指定されたファイルに出力されます。これにより、XMLドキュメント全体ではなく、特定のテキスト部分を含むXMLの断片を効率的に正規化して保存する必要がある場合に活用されます。
構文(syntax)
1$domText->C14NFile(string $uri, bool $exclusive = false, bool $with_comments = false);
引数(parameters)
string $uri, bool $exclusive = false, bool $withComments = false, ?array $xpath = null, ?array $nsPrefixes = null
- string $uri:Canonicalization(標準化)を行うXMLファイルのURIを指定します。
- bool $exclusive = false: 排他Canonicalization(特定のノードのみを対象とする)を行うかどうかを指定します。デフォルトはfalse(非排他)です。
- bool $withComments = false: コメントノードを含めてCanonicalizationするかどうかを指定します。デフォルトはfalse(コメントは除外)です。
- ?array $xpath = null: XPath式を指定して、Canonicalizationの対象ノードを絞り込むことができます。デフォルトはnull(全ノード対象)です。
- ?array $nsPrefixes = null: 名前空間プレフィックスの配列を指定して、Canonicalizationの対象となる名前空間を制御できます。デフォルトはnull(全ての名前空間を対象)です。
戻り値(return)
int|false
C14NFileメソッドは、ノードの正規化処理の状況を示す整数値を返します。処理に成功した場合は1、失敗した場合はfalseを返します。