此Web服务是否返回不良形式的XML?
问题描述:
我试图解决一个问题,其中一个Web服务返回2个XML开始标记。此Web服务是否返回不良形式的XML?
我想知道这是正常的,或者他们必须解决这个问题:
卷曲 http://url.com/C.asmx/ExecuteFileTransactionSL -d POS = “0000” -d fileContent = “$(猫” 02I - IDA。 XML “)”
XML文件:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<Mensaje>
<EncabezadoMensaje>
<VersionMsj>ACT20</VersionMsj>
<TipoMsj>OL</TipoMsj>
<TipoTransaccion>02I</TipoTransaccion>
<InicioTrx>
<FechaTrx>20160704</FechaTrx>
<HoraTrx>104600</HoraTrx>
</InicioTrx>
<Terminal>
<TipoTerminal>PC</TipoTerminal>
<NumeroTerminal>60000070</NumeroTerminal>
</Terminal>
<Financiador>
<CodigoFinanciador>OSDE</CodigoFinanciador>
</Financiador>
<Prestador>
<CuitPrestador>30708402911</CuitPrestador>
<RazonSocial>Sanatorio Prueba</RazonSocial>
</Prestador>
</EncabezadoMensaje>
<EncabezadoAtencion>
<Credencial>
<NumeroCredencial>60671956201</NumeroCredencial>
<ModoIngreso>M</ModoIngreso>
<CodigoSeguridad>891</CodigoSeguridad>
</Credencial>
</EncabezadoAtencion>
</Mensaje>
当我想解析响应,我得到
XML声明只允许在文档
这开始是的回复:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/"><?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
;
<Mensaje>
<EncabezadoMensaje>
<VersionMsj>ACT20</VersionMsj>
<TipoMsj>OL</TipoMsj>
<TipoTransaccion>02A</TipoTransaccion>
<IdMsj>1095489</IdMsj>
<InicioTrx>
<FechaTrx>20160704</FechaTrx>
<HoraTrx>070728</HoraTrx>
</InicioTrx>
<Terminal>
<TipoTerminal>PC</TipoTerminal>
<NumeroTerminal>60000070</NumeroTerminal>
</Terminal>
<Financiador>
<CodigoFinanciador>OSDE</CodigoFinanciador>
<SystemTrace>368878 </SystemTrace>
</Financiador>
<Prestador>
<CuitPrestador>30708402911</CuitPrestador>
<RazonSocial>Sanatorio Prueba</RazonSocial>
</Prestador>
<GeneradorRespuesta>98</GeneradorRespuesta>
<Rta>
<CodRtaGeneral>00</CodRtaGeneral>
<DescripcionRtaGeneral>OK, PRESTACION RE- GISTRADA </DescripcionRtaGeneral
>
<MensajeDisplay>OK, PRESTACION RE- GISTRADA </MensajeDisplay>
<MensajePrinter>OK, PREST.REGISTRADAP.2 210 GRAVADO
</MensajePrinter>
</Rta>
<NroReferencia>368878 </NroReferencia>
</EncabezadoMensaje>
<EncabezadoAtencion>
<Credencial>
<NumeroCredencial>61510837601 </NumeroCredencial>
<VersionCredencial>00</VersionCredencial>
<ModoIngreso>M</ModoIngreso>
<CodigoSeguridad>891</CodigoSeguridad>
<PlanCredencial>2 210</PlanCredencial>
<CondicionIVA>G</CondicionIVA>
</Credencial>
<Preautorizacion>
<CodigoPreautorizacion>000000</CodigoPreautorizacion>
</Preautorizacion>
<RtaAdicional>
<CodigoRtaAdicional>00</CodigoRtaAdicional>
</RtaAdicional>
<Beneficiario>
<NombreBeneficiario>FRAGATI MARTIN ARIEL </NombreBeneficiario>
<Sexo>M</Sexo>
<FechaNacimiento>19760412</FechaNacimiento>
</Beneficiario>
</EncabezadoAtencion>
<DetalleProcedimientos>
<CodPrestacion>420101</CodPrestacion>
<TipoPrestacion>1</TipoPrestacion>
<ArancelPrestacion>0</ArancelPrestacion>
<CantidadAprobada>01</CantidadAprobada>
<CantidadSolicitada>01</CantidadSolicitada>
<DescripcionPrestacion>CONSULTA EN CONSULTORIO</DescripcionPrestacion>
</DetalleProcedimientos>
</Mensaje></string>
答
正因为如此,虽然可怕,你逃脱XML字符串包裹在string
元素良好的。
但是,除了在文档的第一个位置以外,您还有一个XML声明(<?xml...?>
)。可能最多只有一个XML声明,并且它可能只出现在XML文档的最顶部。 (请参阅Are multiple XML declarations in a document well-formed XML?)
您没有向我们展示足够的信息,无法找到您的问题。例如,可能是工具链中的某个步骤正在消除<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
。这可能是因为您有两个XML文档,每个文档都有自己的XML声明组合在一起。我们无法确切地告知您发布的内容,但这是要查找的内容。
更新:
说明,对与逃脱的XML响应的服务可能会误解你的要求。有一些想法可以通过curl
来设置HTTP服务的HTTP头:Curl command line for consuming webServices?
谢谢,它不是我的网络服务,它来自提供商,我正在努力解决它。 – JorgeeFG