[PHP4] Возможна ли работа c XML-документом как в PHP5?

TsarAlex

Новичок
[PHP4] Возможна ли работа c XML-документом как в PHP5?

Здравствуйте!

Необходимо извлечь из XML-документа (которые пришёл в POST-запросе) несколько значения/атрибутов.
В PHP5 можно довольно просто весь XML превратить в объект... а как быть в PHP4?
 

Gorynych

Посетитель PHP-Клуба
API разное. Большинство атрибутов, доступных для 5-й версии как свойства в 4-ке вытягивались функциями и т.п. Разные реализации DOM и еще... в 4-ке и 5-ке разные реализации вообще объектов, так что все относительно.

но Гравицапа прав в одном - извлечь нужное из XML-документа и там и там можно.
 

TsarAlex

Новичок
Какие библиотеки позволяют валидировать XML по схеме?

Где можно скачать php_domxml.dll для PHP4?
 

Gorynych

Посетитель PHP-Клуба
TsarAlex

постарайтесь осилить документацию. На вопросы где взять и как включить там найдутся ответы.

http://www.php.net/manual/en/ref.dom.php - API для PHP 5, а http://www.php.net/manual/en/ref.domxml.php - для PHP 4. Они разные. Сильно разные.

поддержка XML в PHP 4 была ограниченной и вряд ли у Вас выйдет обратная совместимость от старшей версии к младшей. Если бы задача была обратной, то я бы Вас отослал к http://alexandre.alapetite.net/doc-alex/domxml-php4-php5/ но не наоборот.
 

TsarAlex

Новичок
Дык, я вроде читаю... читаю... но не могу найти, как используя DOMXML произвести валидацию XML-документа по схеме.
schemaValidate есть в DOM, который предназначен для PHP5. То есть, получается выход только один - переходить с PHP4 на PHP5 и там использовать DOM [http://ru.php.net/manual/en/ref.dom.php]?

Задача - провалидировать XML-документ, затем извлечь несколько значений (из тегов и атрибутов).
 

Gorynych

Посетитель PHP-Клуба
Автор оригинала: TsarAlex
То есть, получается выход только один - переходить с PHP4 на PHP5 и там использовать DOM [http://ru.php.net/manual/en/ref.dom.php]?
это будет самое правильное решение. Реализация XML в PHP 5 изменена и практически переписана в том числе потому, что поддержка в 4-ке была сделана неким оригинальным "своим путем".

с другой стороны... я вообще перестал что-то понимать: получается, что пишите Вы на 4-ой версии, про работу с XML читали для 5-ой, задача у вас вообще не типичная (мне даже интересно стало: сколько человек реально пользовались функциями валидации XML-документов в рамках программирования на PHP?)... Может Вы привыкли писать на другом ЯП? Тогда может и задачу решать на нем? Как-то все сумбурно...
 

TsarAlex

Новичок
Я хотел бы написать "морду" сайта так, чтобы работала максимально везде. А ВебСервисы необходимы для работы с Админ.клиентом. Необходимо сделать общение только в XML-формате (пересылкой строки в которой находится XML-разметка с зарпосом, а угловые скобки переведены в спец. символы). Дак вот чтобы не порушить БД необходимо валидировать всё что приходит до того как с этой информацией начать работать. В PHP4 есть всё необходимое для работы с XML в рамках текщих задач.

В PHP5 есть проблемы с NuSOAP :'( а примеров написания WebServices с помощью XML-RPC пока не нашёл...
 

TsarAlex

Новичок
Пробовал пример из статьи раскочегарить, но сервер никак не хочет работать.
PHP:
<?php 

if (!isset($HTTP_RAW_POST_DATA)){
	$HTTP_RAW_POST_DATA = file_get_contents('php://input');
}

$quotes = array( 
  "ibm" => 98.42 
);   

function getQuote($symbol) { 
  global $quotes; 
  return $quotes[$symbol]; 
} 

$server = new SoapServer("http://localhost/prj1_Ver1/ws_php5/stockquote2.wsdl"); 
$server->addFunction("getQuote"); 
$server->handle(); 
?>
Клиент показывает следующую информацию
SoapFault exception: [Client] looks like we got no XML document in D:\PHP-DEV\www\prj1_Ver1\ws_php5\client.php:12
Stack trace:
#0 [internal function]: SoapClient->__call('getQuote', Array)
#1 D:\PHP-DEV\www\prj1_Ver1\ws_php5\client.php(12): SoapClient->getQuote('ibm')
#2 {main}

Подскажите пожалуйста в чём может быть проблема?
 
Сверху