У меня проблема с созданным веб-сервисом ColdFusion. Служба принимает данные XML в кодировке Base64, а затем записывает их на диск для архивирования. Затем этот файл проходит базовую проверку схемы, и любые ошибки возвращаются пользователю следующим образом:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<UploadXMLResponse xmlns="http://url">
<UploadXMLReturn>
<AuthMessage>Authentication successful</AuthMessage>
<AuthStatus>Success</AuthStatus>
<FileInfo>File Example.xml was successfully uploaded</FileInfo>
<UploadStatus>Success</UploadStatus>
<xmlValErrors>
<xmlValErrors xsi:type="xsd:string">1824</xmlValErrors>
<xmlValErrors xsi:type="xsd:string">Error Message</xmlValErrors>
<xmlValErrors xsi:type="xsd:string">23</xmlValErrors>
<xmlValErrors xsi:type="xsd:string">1824</xmlValErrors>
<xmlValErrors xsi:type="xsd:string">Error Message</xmlValErrors>
<xmlValErrors xsi:type="xsd:string">38</xmlValErrors>
</xmlValErrors>
<xmlValMessage>Schema validation generated errors</xmlValMessage>
<xmlValStatus>Failure</xmlValStatus>
</UploadXMLReturn>
</UploadXMLResponse>
</soapenv:Body>
</soapenv:Envelope>
Проблема в том, что элемент <xmlValErrors>
вложен немного странным образом. Это связано с тем, как ColdFusion обрабатывает массив ошибок. В результате, когда пользователь пытается проанализировать ответ, он может видеть только начальный элемент <xmlValErrors>
.
.Net представляется здесь особой проблемой, так как он видит элемент <xmlValErrors>
как пустой массив, хотя он явно содержит множество других элементов.
Я подозреваю, что проблема заключается в повторном использовании имени дочерних элементов в элементе <xmlValErrors>
. Однако я не смог найти способ обойти это в ColdFusion.
Мысли о том, как это можно решить, будут высоко оценены.