Я скачал схему для этого веб-сервиса и затем использовал RestDebugger для создания необходимых файлов pascal.Ответ от веб-сервиса содержит схему и часть «diffgram».Дифграмма и схема содержатся в разделе, который называется, но исходный код, созданный RestDebugger, не содержал раздел "diffgram".Мне пришлось добавить это в файл pascal вручную.
Хорошо, пока все хорошо, но когда я попытался получить данные из этой части, у меня не получилось.Я использовал XML Mapper для создания файла преобразования, который будет использоваться с компонентом TXMLTransform.Я подключил этот компонент к TDataset и TDBGrid, но я получаю только заголовки столбцов, но без данных.
код для этого выглядит следующим образом:
XMLTransform1.SourceXMLFile := 'xml1.xml';
ClientDataSet1.XMLData := XMLTransform1.Data;
ClientDataSet1.Active := true;
Файл преобразования настроен всвойство компонентов: TransformationFile: "Test.xtr"
Не имеет значения, что содержит файл данных, если он является действительным xml.В результате получается сетка, в которой отображаются все столбцы с правильными заголовками, но без данных.
Я прочитал много документации по этому вопросу, но не смог найти ни одного документа, который помог бы мне с моей проблемой.Я не уверен, какой документ мне следует включить сюда, там много текста, но я уверен, что это должно быть что-то очень фундаментальное, что я упускаю, поэтому мне кажется, что достаточно простой, но полной инструкции / образца.,В противном случае я думаю, что мне нужно создать свою собственную функцию синтаксического анализа, которая, по крайней мере, работает над этим конкретным проектом.Но это кажется тяжелым.
Короткий ответ:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetDataBySecureResponse xmlns="https://xxxxx.getdata/">
<GetDataBySecureResult>
<SearchNumber>674564784</SearchNumber>
<TransactionId>1199</TransactionId>
<Block_Name>BSDA_C_BASIC</Block_Name>
<Parameters>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<GETDATA_RESPONSE diffgr:id="GETDATA_RESPONSE1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<ORGNR>674564784</ORGNR>
<NAME>NICE NAME</NAME>
</NewDataSet>
</diffgr:diffgram>
</Parameters>
</GetDataBySecureResult>
</GetDataBySecureResponse>
</soap:Body>
</soap:Envelope>
В этом простом примере я получу сетку, заполненную двумя столбцами, "ORGNR" и "NAME", но без строк.