DOMNode::C14N

ノードを文字列に正規化する

説明

public stringfalse DOMNode::C14N(
    bool $exclusive = false,
    bool $withComments = false,
    arraynull $xpath = null,
    arraynull $nsPrefixes = null
)

ノードを文字列に正規化します。

パラメータ

exclusive

指定した xpath あるいは名前空間プレフィックスにマッチするノードだけを対象としたパースを有効にする。

withComments

コメントを残して出力する。

xpath

ノードをフィルタする XPath の配列。 この配列のそれぞれのエントリは、以下の情報を持つ連想配列です:

  • XPath の式の文字列を含む query キー。必須です。
  • 名前空間のプレフィックス(keys) を名前空間URI (values) にマップした配列を含む namespaces キー。オプションです。

nsPrefixes

ノードを絞り込むための名前空間プレフィックスの配列。

戻り値

正規化したノードを文字列で返します。 失敗した場合に false を返します

例1 XPath クエリの例

以下のコードは、XPath クエリを使ってノードをフィルタし、 正規化する高度なやり方を示します。

<?php
$dom = new DOMDocument();
$dom->loadXML(<<<XML
<root xmlns:food="urn:food">
    <!-- redundant namespace declaration will be canonicalized -->
    <food:fruit xmlns:food="urn:food">Apple</food:fruit>
    <food:fruit>Orange</food:fruit>
    <food:fruit>Pear</food:fruit>
    <!-- vegetables here -->
    <food:vegetable>Lettuce</food:vegetable>
</root>
XML);
echo $dom->C14N(true, false, [
    "query" => ".//f:fruit|.//f:fruit/text()",
    "namespaces" => ["f" => "urn:food"],
]);
?>

上の例の出力は以下となります。

<food:fruit>Apple</food:fruit><food:fruit>Orange</food:fruit><food:fruit>Pear</food:fruit>

参考

  • DOMNode::C14NFile