使用PHP类方法的XML代码的规范化(c14n)

时间:2014-06-19 16:17:26

标签: php xml

我在PHP文档中发现了一个来自DOMNode类的方法,定义为DOMNode :: C14N(http://cl1.php.net/manual/en/domnode.c14n.php)。遗憾的是,我很难找到有关其用法的完整示例,我尝试了一些代码但没有成功......可能是由于我使用PHP本机类的空体验。

<?php
$Document = '<Document>... (more XML code to canonicalize)</Document>';

$xml = new C14N();
$xml = $Document->C14N();

执行时我得到:

Fatal error: Class 'C14N' not found in C:\wamp\www\...

我已经研究过,DOMNode类包含在DOM扩展中,默认情况下是安装和启用的,而c14n不是类,而是方法。

我有PHP 5.3.13。

提前致谢。

1 个答案:

答案 0 :(得分:4)

帮助您阅读PHP手册:

DOMNode::C14N

这意味着对于班级DOMNode,有一个名为C14N的方法。

那么在哪里可以找到这样的 DOMNode ,那么你可以调用该方法吗?

嗯, DOMDocument 例如是 DOMNode ,请参阅以下手册页:http://cl1.php.net/manual/en/class.domdocument.php它写的是

DOMDocument extends DOMNode {

的扩展名是,因此 DOMDocument DOMNode 。向下滚动该页面将为您提供有关如何创建此类对象的一般示例代码,然后您只需要调用该方法:

// "Create" the document.
$xml = new DOMDocument( "1.0", "ISO-8859-15" );
$xml->loadXML('<Document>... (more XML code to canonicalize)</Document>');
echo $xml->C14N();

希望这可以帮助您确定方向。

示例Online-demo):

<?php
// "Create" the document.
$xml = new DOMDocument( "1.0", "ISO-8859-15" );
$xml->loadXML('<Document b="c"    

f="e"  a="j">...

<!-- stupid whitespace example -->

   mother told me to        go shopping

</Document>');

echo $xml->C14N();

节目输出

<Document a="j" b="c" f="e">...



   mother told me to        go shopping

</Document>

如此示例所示,属性已排序且注释已被删除。