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

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

作成日: 更新日:

基本的な使い方

C14NFileメソッドは、DOMDocumentクラスにロードされたXML文書を、標準的な正規化形式(Canonical XML, 略してC14N)に変換して指定したファイルに保存するメソッドです。この「正規化」とは、XML文書の表現上の差異、例えば空白文字の扱い、属性の順序、文字エンコーディング、名前空間の宣言方法などを統一し、論理的に同じ内容のXML文書であれば常に一意のバイト列として表現できるように変換することを指します。これにより、同じ内容のXML文書が異なる形式で保存されていたとしても、正規化することで確実にその同一性を検証することが可能になります。

C14NFileメソッドは、主にXML署名やXMLセキュリティの分野で、文書の完全性や認証性を厳密に保証する必要がある場面で利用されます。このメソッドを使用する際には、第一引数で正規化したXML文書の出力先となるファイルパスを指定します。さらに、第二引数で排他的正規化(Exclusive C14N)を適用するかどうか、第三引数でXML文書中のコメントノードを含めるかどうかを任意で設定できます。処理が成功した場合はtrueを、失敗した場合はfalseを返します。このメソッドを使うことで、XML文書の形式的な違いに起因する問題を避け、信頼性の高いXML処理を実現できます。

構文(syntax)

1<?php
2$dom = new DOMDocument();
3$dom->loadXML('<root><element>Hello</element></root>');
4$dom->C14NFile('normalized_output.xml');
5?>

引数(parameters)

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

  • string $uri: 正規化するXMLファイルへのURIを指定します。
  • bool $exclusive = false: 排他的正規化を行うかどうかを指定します。trueにすると、指定されたXPath式に一致するノードのみが正規化されます。
  • bool $withComments = false: コメントを含めて正規化するかどうかを指定します。trueにすると、XMLコメントも正規化の対象となります。
  • ?array $xpath = null: 排他的正規化を行う場合に、正規化対象とするノードを指定するXPath式を配列で指定します。
  • ?array $nsPrefixes = null: 名前空間プレフィックスを正規化の際に含めるかどうかを指定する配列です。

戻り値(return)

DOMDocument|false

このメソッドは、XML文書を正規化してファイルに保存します。成功した場合はDOMDocumentオブジェクトを返し、失敗した場合はfalseを返します。

関連コンテンツ

関連プログラミング言語