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

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

作成日: 更新日:

基本的な使い方

DOMNotationクラスのC14Nメソッドは、ノードのサブツリーを、XMLの正規化(Canonical XML)形式でシリアライズするメソッドです。具体的には、DOMNotationノードをルートとするサブツリーを、W3C勧告の「Canonical XML Version 1.1」に準拠した形式の文字列として返します。このメソッドは、XML文書の一部を、他のシステムやコンポーネントとの間で一貫性のある方法で交換したり、デジタル署名を作成する際に、データの正規化された表現を得るために利用されます。

C14Nメソッドは、いくつかのオプション引数を受け取ることができます。これらの引数を使用することで、正規化処理の詳細な制御が可能です。例えば、コメントを含めるか、属性の順序を固定するか、名前空間の処理方法などを指定できます。これらのオプションを適切に設定することで、特定の用途に合わせた正規化されたXMLを得ることができます。

このメソッドは、DOMDocumentオブジェクトに対して適用されるのではなく、特定のDOMNotationノードに対して適用される点に注意が必要です。DOMNotationノードは、XML文書のDTD(Document Type Definition)で宣言されたNotationを表すノードです。したがって、C14Nメソッドは、通常、文書全体の正規化というよりも、特定のNotationに関連する部分の正規化に用いられます。

返り値は、正規化されたXML文字列です。もしエラーが発生した場合(例えば、サポートされていないオプションが指定された場合など)、このメソッドはFALSEを返します。そのため、返り値が文字列であることを確認してから利用することが推奨されます。システムエンジニアがXMLデータを扱う上で、データの整合性やセキュリティを確保するために、C14Nメソッドは重要な役割を果たします。

構文(syntax)

1DOMNotation::C14N(
2    ?string $exclusive = null,
3    ?bool $withComments = null,
4    ?array $xpath = null,
5    ?string $nsPrefixes = null
6): string|false

引数(parameters)

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

PHP:

  • bool $exclusive = false: 排他的な正規化を行うかどうかを指定します。true の場合、指定されたXPath式に一致するノードのみが正規化されます。
  • bool $withComments = false: コメントノードを正規化に含めるかどうかを指定します。
  • ?array $xpath = null: 正規化するノードを限定するためのXPath式を指定します。
  • ?array $nsPrefixes = null: 名前空間プレフィックスを正規化に含めるかどうかを指定します。

戻り値(return)

DOMDocument | false

このメソッドは、XML文書を正規化して標準的な文字列表現にしたDOMDocumentオブジェクトを返します。正規化に失敗した場合はfalseを返します。

関連コンテンツ

関連プログラミング言語