Reputation: 1007
I found in PHP documentation a method from the DOMNode class, defined as DOMNode::C14N (https://www.php.net/manual/en/domnode.c14n.php). Sadly i've had a hard time finding complete examples about its usage, and I have tryed some code with no success... probably due to my null experience using the PHP native classes.
<?php
$Document = '<Document>... (more XML code to canonicalize)</Document>';
$xml = new C14N();
$xml = $Document->C14N();
When executing i get:
Fatal error: Class 'C14N' not found in C:\wamp\www\...
I have researched and the class DOMNode is included in the DOM extension which is suposed to come installed and enabled by default, plus c14n is not a class but a method.
I have PHP 5.3.13.
Thanks in advance.
Upvotes: 1
Views: 6502
Reputation: 198109
To help you reading the PHP Manual here:
DOMNode::C14N
This means for the class DOMNode
there is a method named C14N
.
So where to find such a DOMNode, so you can call that method on?
Well, DOMDocument for example is a DOMNode, see the following manual page: https://www.php.net/manual/en/class.domdocument.php it write that
DOMDocument extends DOMNode {
An extends stands for is a, so DOMDocument is a DOMNode. Scrolling down on that page will already give you some general example code on how to create such an object, you then only need to call the method:
// "Create" the document.
$xml = new DOMDocument( "1.0", "ISO-8859-15" );
$xml->loadXML('<Document>... (more XML code to canonicalize)</Document>');
echo $xml->C14N();
Hope this helps you with your orientation.
Example (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();
Program Output
<Document a="j" b="c" f="e">...
mother told me to go shopping
</Document>
As this example shows, the attributes are sorted and the comment has been removed.
Upvotes: 4