Почему выдается ошибка Cannot parse XML or incorrect root element?

Есть такая хорошая система как fidelio, возможно кто то сталкивался.

Пытаюсь туда добавить с сайта информацию. Система принимает xml

вот код

$xml_file = "
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
	<fidelio
		xmlns=\"V8XMLInterface\"
		xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
		xsi:schemaLocation=\"V8XMLInterface c:\duffy\Specifications\XMLInterface\FidelioXML.xsd\"
		Version=\"1.0.0\">
		<request ID=\"Sys1\" UserName=\"site\" Password=\"site\">
			<command>
				<post>
					<crm_posting>
						<GuestNum>423077</GuestNum>
						<PostingDate>05.07.2024</PostingDate>
						<Quantity>1</Quantity>
						<Price>100</Price>
						<Comment>Payment 1 comment</Comment>
						<Description>Payment 1 description</Description>
						<DepartmentCode>991</DepartmentCode>
					</crm_posting>
				</post>
			</command>
		</request>
	</fidelio>
";

$url = 'http://IP_ADRESS/V8/FidelioIISWrapper.dll/FidelioXMLInterface.DataHandler?ic=007';

$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url);
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $xml_file);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_exec($ch);

//статусы
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$res = curl_exec($ch);

if ($errno = curl_errno($ch)) {
	$message = curl_strerror($errno);
	echo "cURL error ({$errno}):\n {$message}";
}
//закрываем соединение
curl_close($ch);

//ответ

var_dump($res);


при распаковке выдает
<?xml
version="1.0" encoding="utf-8" ?>
<fidelio Version="1.0.0">
    <response ID="UNKNOWN" Status="IR" Message="Cannot parse XML or incorrect root element.&#xD;&#xA;Please complete DB setup for the specified instance"/>
</fidelio>


мб кто сталкивался с подобным. мб это на моей стороне ошибка. Прошу помочь
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 1
toxa82
@toxa82
Потому что вы им не валидный XML отправляете. Достаточно вашу строку воткнуть в simplexml_load_string($xml_file) и увидите гору ошибок. Сформируйте XML для отправки в коде, или проверьте ваш.
Да хотя бы начальный перенос уберите, уже хоть начнёт парсить его. Ну и xmlns="V8XMLInterface" не валидный.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы