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



我在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();

执行i get:

Fatal error: Class 'C14N' not found in C:wampwww...

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

我有PHP 5.3.13.

在这里帮助你阅读PHP手册:

DOMNode::C14N

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

那么在哪里可以找到这样一个DOMNode,以便您可以调用该方法?

好吧,以DOMDocument为例,是一个DOMNode,参见下面的手册页:http://cl1.php.net/manual/en/class.domdocument.php它写

DOMDocument extends DOMNode {

表示的extends是,因此DOMDocumentDOMNode。向下滚动该页面将会给你一些关于如何创建这样一个对象的通用示例代码,然后你只需要调用方法:

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

希望这对你的方向有帮助。

(在线演示):

<?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>

如本例所示,对属性进行了排序,并删除了注释。

最新更新