【PHP8.x】C14Nメソッドの使い方
C14Nメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
C14Nメソッドは、ドキュメントを正規化されたXML形式で出力するメソッドです。Dom\HTMLDocumentクラスに属し、HTMLドキュメントをXMLドキュメントとしてC14N(Canonical XML)標準に従ってシリアライズします。C14Nは、XMLドキュメントを比較したり、デジタル署名を作成したりする際に、XMLドキュメントの表現を標準化するために使用されます。
このメソッドは、ドキュメントの構造と内容を標準的な形式に変換し、名前空間の宣言、属性の順序、空白の処理などを一定のルールに従って調整します。これにより、意味的に等価なXMLドキュメントであっても、異なる表現形式を持っている場合に、それらを同一のものとして扱うことができます。
C14Nメソッドは、オプションで排他的C14N(Exclusive XML Canonicalization)を使用できます。排他的C14Nは、指定されたノードセットに影響を与える名前空間宣言のみを保持するため、より厳密な正規化が必要な場合に役立ちます。
このメソッドは、正規化されたXMLドキュメントを文字列として返します。エラーが発生した場合は、falseを返します。システムエンジニアがXMLドキュメントを扱う際、特にセキュリティ関連の処理や異なるシステム間でのデータ交換を行う場合に、C14Nメソッドを利用することで、データの整合性を確保し、潜在的な問題を回避できます。具体的には、電子署名やXMLデータの比較、キャッシュのキー生成などに利用できます。
構文(syntax)
1Dom\HTMLDocument::C14N( ?string $exclusive = null, ?bool $withComments = null, ?array $nodes = null, ?string $namespaceUris = null ) : string|false
引数(parameters)
bool $exclusive = false, bool $with_comments = false, ?array $xpath = null, ?array $ns_prefixes = null
- bool $exclusive = false: 特定の要素のみを正規化するかどうかを指定します。trueにすると、指定されたXPathにマッチする要素とその子孫のみが正規化されます。
- bool $with_comments = false: コメントノードを正規化に含めるかどうかを指定します。trueにすると、コメントノードも正規化されます。
- ?array $xpath = null: 正規化の対象を限定するためのXPathクエリの配列を指定します。nullの場合はドキュメント全体が対象となります。
- ?array $ns_prefixes = null: 名前空間プレフィックスの配列を指定します。正規化時にこれらのプレフィックスのみが考慮されます。
戻り値(return)
string|false
C14Nメソッドは、XML文書を正規化して文字列として返します。正規化に失敗した場合はfalseを返します。