函数名称:DOMNode::C14N()
适用版本:PHP 5 >= 5.2.0, PHP 7, PHP 8
函数描述:DOMNode::C14N() 方法将节点及其子节点序列化为标准的字符串表示形式,符合Canonical XML(C14N)规范。
用法:
public DOMNode::C14N( bool $exclusive = FALSE, bool $with_comments = FALSE, array $xpath, array $ns_prefixes = NULL) : string|false
参数:
$exclusive
(可选):设置为TRUE
表示只包括当前节点及其后代节点,设置为FALSE
表示包括整个文档。默认为FALSE
。$with_comments
(可选):设置为TRUE
表示包括注释节点,设置为FALSE
表示不包括注释节点。默认为FALSE
。$xpath
:(可选)一个 XPath 表达式数组,用于选择要序列化的节点。只有满足表达式的节点才会被序列化。默认为NULL
,即序列化所有节点。$ns_prefixes
:(可选)一个关联数组,用于指定某些命名空间的前缀。键是命名空间 URI,值是前缀。默认为NULL
。
返回值:
- 若序列化成功,则返回序列化后的标准字符串。
- 若发生错误,则返回
FALSE
。
示例:
// 创建一个 XML 文档
$xml = '<?xml version="1.0"?>
<root>
<element1>Value 1</element1>
<element2>Value 2</element2>
</root>';
$dom = new DOMDocument();
$dom->loadXML($xml);
$root = $dom->documentElement;
// 调用 C14N 方法进行序列化,并输出结果
$c14n = $root->C14N();
echo $c14n;
输出结果:
<root>
<element1>Value 1</element1>
<element2>Value 2</element2>
</root>
注意事项:
- 示例中的 XML 是简化的,实际应用中可以包含更多的节点和属性。
$xpath
参数可以使用 XPath 表达式来选择特定的节点进行序列化。例如,$xpath = ['//element1']
将仅序列化名为 "element1" 的节点及其后代节点。$ns_prefixes
参数用于指定某些命名空间的前缀,以在序列化时指定前缀而不是完整的命名空间 URI。例如,$ns_prefixes = ['http://example.com/ns' => 'ex']
将序列化时使用 "ex" 前缀代替 "http://example.com/ns" 命名空间 URI。
更多信息: