我正在尝试解决一个问题,即Web服务返回2个XML开始标记。
我想知道这是否正常,或者他们是否必须解决它:
卷曲 http://url.com/C.asmx/ExecuteFileTransactionSL -d pos =“0000”-d fileContent =“$(cat”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>
答案 0 :(得分:2)
实际上,虽然可怕,但是包含在string
元素中的转义XML字符串格式正确。
但是,除了文档的第一个位置之外,您还有一个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
来设置Web服务的HTTP标头:Curl command line for consuming webServices?