我创建的ColdFusion‘ve服务有问题。该服务接受Base64编码的XML数据,然后将其写入磁盘进行存档。然后,该文件经过基本的模式检查,并将所有错误报告给用户,如下所示:
<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中找到解决这个问题的方法。
关于如何解决这个问题的想法将不胜感激。
发布于 2009-05-15 15:05:54
您是如何访问xmlValErrors的?因为您的错误数组位于父xmlVarErrors中,所以您需要像这样访问它:
uploadxmlreturn.xmlvarerrors.xmlvarerrors
第一个xmlvarerror指向父级,第二个指向错误数组。
讲得通?
发布于 2009-05-14 18:48:44
XML和SOAP都不是我的强项,但xmlValErrors的子元素不应该也称为"xmlValErrors“。难道你不希望它们都是"xmlValError“吗?
https://stackoverflow.com/questions/862760
复制相似问题