Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从SQL Server创建XML_Sql Server_Xml_Sqlxml_Xml Comments - Fatal编程技术网

Sql server 从SQL Server创建XML

Sql server 从SQL Server创建XML,sql-server,xml,sqlxml,xml-comments,Sql Server,Xml,Sqlxml,Xml Comments,我需要一些帮助。我正在尝试使用以下查询创建XML: WITH XMLNAMESPACES ('Envelope' AS soapenv) SELECT * FROM CrearViaje4 JOIN transporte ON CrearViaje4.Cod_viaje = transporte.Cod_viaje JOIN depositoSalida ON transporte.Cod_viaje = depositoSalida.cod_viaje

我需要一些帮助。我正在尝试使用以下查询创建XML:

WITH XMLNAMESPACES ('Envelope' AS soapenv) 
    SELECT * 
    FROM CrearViaje4
    JOIN transporte ON CrearViaje4.Cod_viaje = transporte.Cod_viaje
    JOIN depositoSalida ON transporte.Cod_viaje = depositoSalida.cod_viaje
    FOR XML AUTO, ROOT('soapenv:Body'), ELEMENTS
我得到了这个结果:

  <soapenv:Body xmlns:soapenv="Envelope">
      <CrearViaje4>
        <cod_viaje>A02VAIFHDXH</cod_viaje>
        <Empresa>Tradelog</Empresa>
        <transporte>
          <cod_viaje>A02VAIFHDXH</cod_viaje>
          <depositoSalida>
            <cod_viaje>A02VAIFHDXH</cod_viaje>
          </depositoSalida>
        </transporte>
      </CrearViaje4>
    </soapenv:Body>

您可以尝试加入CrearViaje4.Cod\u viaje=depositoSalida.Cod\u viaje上的depositoSalida

with xmlnamespaces ('Envelope' as soapenv)
select  *
from    CrearViaje4
join    transporte on CrearViaje4.Cod_viaje = transporte.Cod_viaje
join    depositoSalida on CrearViaje4.Cod_viaje = depositoSalida.cod_viaje
for xml auto, root('soapenv:Body'), elements
或者使用子查询获取额外数据

with xmlnamespaces ('Envelope' as soapenv)
select  *
        , (   select    *
              from      transporte
              where     CrearViaje4.Cod_viaje = transporte.Cod_viaje
              for xml path(''), type ) as transporte
        , (   select    *
              from      depositoSalida
              where     CrearViaje4.Cod_viaje = depositoSalida.Cod_viaje
              for xml path(''), type ) as depositoSalida
from    CrearViaje4
for xml auto, root('soapenv:Body'), elements

这是一个很好且全面的答案,+1来自我这边。。。尽管我建议避免使用
AUTO
模式,并在(几乎)所有情况下使用
PATH
。一个例外是
显式
,如果您需要使用名称空间或指令进行不受支持的黑客攻击(但这种模式确实令人痛苦…)。值得一提的是:子选择将重复名称空间,这没有错,但非常烦人。。。
with xmlnamespaces ('Envelope' as soapenv)
select  *
        , (   select    *
              from      transporte
              where     CrearViaje4.Cod_viaje = transporte.Cod_viaje
              for xml path(''), type ) as transporte
        , (   select    *
              from      depositoSalida
              where     CrearViaje4.Cod_viaje = depositoSalida.Cod_viaje
              for xml path(''), type ) as depositoSalida
from    CrearViaje4
for xml auto, root('soapenv:Body'), elements