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

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

作成日: 更新日:

基本的な使い方

C14Nメソッドは、XMLノードをXML標準形式(Canonical XML)に正規化する処理を実行するメソッドです。この正規化は、XMLドキュメントの内容が論理的に同じであっても、表現方法の違い(例えば、属性の順序、名前空間の宣言方法、空白文字の扱いなど)によって異なる見た目になる問題を解決するために用いられます。具体的には、XML文書内の要素や属性、名前空間の記述方法を一貫した標準形式に変換することで、異なる環境やツールで生成されたXMLが同一であるかを正確に比較できるようにします。

特に、XMLのデジタル署名や暗号化の分野で非常に重要な役割を果たします。文書が改ざんされていないことを検証する際、正規化されていないXMLでは表現の違いが「変更」として誤って認識される可能性があるため、署名前にXMLをC14N形式に変換することが一般的です。このメソッドは、排他的C14Nを適用するかどうか、コメントを含めるかどうか、特定のXPathに基づいてノードを対象とするかといったオプションを指定できます。実行すると、正規化されたXMLを文字列として返します。これにより、XMLの完全性を保証する厳密な比較や検証が確実に行えるようになります。

構文(syntax)

1$domElement->C14N(?bool $exclusive = null, ?bool $with_comments = null, ?array $xpath = null, ?array $ns_prefixes = null)

引数(parameters)

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

  • bool $exclusive = false: true を指定すると、子要素のみを正規化します。
  • bool $withComments = false: true を指定すると、コメントノードも正規化に含めます。
  • array|null $xpath = null: 正規化に含めるノードを XPath 式で指定します。
  • array|null $nsPrefixes = null: 名前空間プレフィックスのリストを指定します。

戻り値(return)

string|false

このメソッドは、DOM要素とその子孫を正規化されたXML形式の文字列として返します。要素の正規化に失敗した場合はfalseを返します。

関連コンテンツ

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