【问题标题】:Add header in a XML header SQL Server在 XML 标头 SQL Server 中添加标头
【发布时间】:2019-08-27 20:18:35
【问题描述】:

我有这个问题

  Select  Top 1 codigo,Numero, fecha,transportista,chofer 
  from VIAJES_HEADER
     for xml path(''), ROOT ('CrearViaje4');

我得到了这个结果:

<CrearViaje4>
  <codigo>X03VAGDVDGR</codigo>
  <Numero>186714</Numero>
  <fecha>2018-02-22</fecha>
  <transportista>X03FGLGQDBM</transportista>
  <chofer>X03FHEXAWEW</chofer>
</CrearViaje4>

如何添加固定文本?我的意思是 XML 的标头 例如:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
        xmlns:unis="http://unisolutions.com.ar/">
          <soapenv:Header/>
          <soapenv:Body>
             <CrearViaje4 xmlns="http://unisolutions.com.ar/">
             <codigo>X03VAGDVDGR</codigo>
            <Numero>186714</Numero>
            <fecha>2018-02-22</fecha>
            <transportista>X03FGLGQDBM</transportista>
            <chofer>X03FHEXAWEW</chofer>
        </CrearViaje4>
     </soapenv:Body>
    </soapenv:Envelope>
    </soapenv:Envelope>

【问题讨论】:

    标签: xml xml-parsing sqlxml


    【解决方案1】:

    像往常一样,SQL Server XQuery FLWOR 表达式可以方便地添加 SOAP Envelope 和命名空间。

    SQL

    -- DDL and sample data population, start
    DECLARE @tbl TABLE(
        ID INT IDENTITY(1,1) PRIMARY KEY
        , codigo VARCHAR(20)
        , Numero INT
        , fecha DATE
        , transportista VARCHAR(20)
        , chofer VARCHAR(20)
    );
    INSERT INTO @tbl
    VALUES
    ('X03VAGDVDGR', 186714, '2018-02-22', 'X03FGLGQDBM', 'X03FHEXAWEW')
    -- DDL and sample data population, end
    
    DECLARE @xml XML;
    
    ;WITH XMLNAMESPACES('http://unisolutions.com.ar/' AS unis)
    SELECT  @xml = (
    SELECT TOP(1) codigo, Numero, fecha, transportista, chofer 
    FROM @tbl
    FOR XML PATH('row'), TYPE, ROOT ('root'));
    
    SELECT @xml.query('
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
            xmlns:unis="http://unisolutions.com.ar/">
              <soapenv:Header/>
              <soapenv:Body>
              <CrearViaje4 xmlns:unis="http://unisolutions.com.ar/">
    {
    for $x in /root/row
    return $x/*
    }</CrearViaje4>
    </soapenv:Body>
    </soapenv:Envelope>');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 2015-09-28
      • 1970-01-01
      • 2010-11-19
      • 2019-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多