#php #xml
#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:wampwww...
Я провел исследование, и класс DOMNode включен в расширение DOM, которое, как предполагается, установлено и включено по умолчанию, плюс c14n — это не класс, а метод.
У меня есть PHP 5.3.13.
Заранее спасибо.
Ответ №1:
Чтобы помочь вам прочитать руководство по PHP здесь:
DOMNode::C14N
Это означает , что для класса DOMNode
существует метод с именем C14N
.
Итак, где найти такой DOMNode, чтобы вы могли вызвать этот метод?
Ну, например, DOMDocument — это DOMNode, смотрите следующую страницу руководства: http://cl1.php.net/manual/en/class.domdocument.php в нем пишут , что
DOMDocument extends DOMNode {
Extends означает is a , поэтому 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();
Надеюсь, это поможет вам сориентироваться.
Пример (онлайн-демонстрация):
<?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>
Как показано в этом примере, атрибуты отсортированы, а комментарий удален.