(PHP 5 >= 5.2.0, PHP 7, PHP 8)
DOMNode::C14N — ノードを文字列に正規化する
$exclusive
= false
,$withComments
= false
,$xpath
= null
,$nsPrefixes
= null
ノードを文字列に正規化します。
exclusive
指定した xpath あるいは名前空間プレフィックスにマッチするノードだけを対象としたパースを有効にする。
withComments
コメントを残して出力する。
xpath
ノードをフィルタする XPath の配列。 この配列のそれぞれのエントリは、以下の情報を持つ連想配列です:
query
キー。必須です。
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>