English | 简体中文 | 繁體中文
查询

DOMNode::C14N()函数—用法及示例

「 将节点及其子节点序列化为标准的字符串表示形式,符合Canonical XML(C14N)规范 」


函数名称: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。

更多信息:

补充纠错
上一个函数: DOMNode::appendChild()函数
下一个函数: DOMNode::C14NFile()函数
热门PHP函数
分享链接