【PHP8.x】C14NFileメソッドの使い方
C14NFileメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
C14NFileメソッドは、XMLの正規化を行い、その結果を指定されたファイルに保存するメソッドです。このメソッドは、DOMElementクラスのインスタンスが表すXMLノードを、W3C勧告に基づくCanonical XML (C14N) または Exclusive Canonical XML (Exc-C14N) 形式で正規化し、その結果をファイルパスとして指定したURIに出力します。
XMLの正規化とは、XML文書の論理的な内容を変えることなく、物理的な表現の違い(例えば、空白文字の扱い、属性の順序、名前空間の宣言方法など)を統一する処理を指します。これにより、見た目は異なっていても内容が等しいXML文書を確実に比較できるようになります。この機能は、XML文書の同一性を保証する場面や、デジタル署名を生成・検証する際に非常に重要な役割を果たします。
このメソッドは、第一引数で正規化されたXML内容を保存するファイルパス(URI)を指定します。オプションとして、第二引数にtrueを指定すると、排他的正規化(Exclusive C14N)が適用され、特定の名前空間プレフィックスの問題に対処します。さらに、第三引数にtrueを指定することで、XMLコメントも正規化の対象に含めてファイルに出力することが可能です。DOMElementオブジェクトの内容を、標準化された形式で外部ファイルに保存したい場合に利用されます。
構文(syntax)
1<?php 2$doc = new DOMDocument(); 3$element = $doc->createElement('example'); 4$doc->appendChild($element); 5$element->C14NFile('output.xml'); 6?>
引数(parameters)
string $uri, bool $exclusive = false, bool $with_comments = false, ?array $xpath = null, ?array $ns_prefixes = null
- string $uri: 正規化するXMLドキュメントのURIを指定します。
- bool $exclusive = false: 排他ノードセレクションを有効にするかどうかを指定します。デフォルトはfalseです。
- bool $with_comments = false: コメントを含めて正規化するかどうかを指定します。デフォルトはfalseです。
- ?array $xpath = null: 正規化するノードをXPath式で指定します。デフォルトはnull(ドキュメント全体)です。
- ?array $ns_prefixes = null: 名前空間プレフィックスを正規化に含めるかどうかを指定します。デフォルトはnull(すべての名前空間)です。
戻り値(return)
int|false
C14NFileメソッドは、要素とその子孫を正規化されたXML形式でファイルに書き込むために使用されます。成功した場合は書き込まれたバイト数を整数で返しますが、失敗した場合はfalseを返します。