2016-07-26 5 views
1
Declare @XML XML 
SET @XML = 
'<?xml version="1.0" encoding="UTF-8"?> 
<Dealer schemaID="DL" xmlns="http://www.abc.zy/kudos/kentucy" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.abc.zy/kudos/kentucy/ik schema13_dealer(dl).xsd"> 
    <Head> 
     <ImporterNr>ZZ840</ImporterNr> 
     <ForwarderNr>XYZA</ForwarderNr> 
     <RecordType>MR</RecordType> 
     <Filename>FZ12325</Filename> 
     <Items> 
     <Item> 
      <AddressType>L</AddressType> 
      <DealerNr>KZ DEALER LLC</DealerNr> 
      <ShortName>KZ D </ShortName> 
      <DealerName>DEALER T </DealerName> 
      <Street>Riverpol Romerro Calle 31D No. 12-25</Street> 
      <Country>SG </Country> 
      <ZIP>1234</ZIP> 
      <Town>MCGY</Town> 
     </Item> 
     </Items> 
    </Head> 
    </Dealer>' 

Goes My Abfrage wie folgtkann nicht mit SchemaId ReadXml

SELECT 
    Cust.value('(ImporterNr)[1]', 'nvarchar(50)') AS 'ImporterNr', 
    Cust.value('(ForwarderNr)[1]', 'nVarchar(50)') AS 'ForwarderNr', 
    Cust.value('(Items/Item/AddressType)[1]', 'nVarchar(50)') AS 'AddressType' 
FROM 
    @XML.nodes('/Dealer/Head') AS AOC(Cust) 

Die 3 Säulen ImporterNr, ForwarderNr, Address NULL Werte zurückgibt Bin ich etwas falsch Ihre Vorschläge tun bitte.

Declare @XML XML SET @XML =

'<?xml version="1.0" encoding="UTF-8"?> 
<Dealer schemaID="DL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.abc.zy/kudos/kentucy/ik schema13_dealer(dl).xsd"> 
    <Head> 
     <ImporterNr>ZZ840</ImporterNr> 
     <ForwarderNr>XYZA</ForwarderNr> 
     <RecordType>MR</RecordType> 
     <Filename>FZ12325</Filename> 
     <Items> 
     <Item> 
      <AddressType>L</AddressType> 
      <DealerNr>KZ DEALER LLC</DealerNr> 
      <ShortName>KZ D </ShortName> 
      <DealerName>DEALER T </DealerName> 
      <Street>Riverpol Romerro Calle 31D No. 12-25</Street> 
      <Country>SG </Country> 
      <ZIP>1234</ZIP> 
      <Town>MCGY</Town> 
     </Item> 
     <Item> 
      <AddressType>L</AddressType> 
      <DealerNr>ALIAV</DealerNr> 
      <ShortName>K V </ShortName> 
      <DealerName>K T VALLEDUPAR        </DealerName> 
      <Street>CARRERA 19 KM 0-700 CLUB DEPORTIVO RUDATO   </Street> 
      <Country>ZO </Country> 
      <ZIP>123  </ZIP> 
      <Town>VALLEDUPAR          </Town> 
     </Item> 
     </Items> 
    </Head> 
    </Dealer>' 

Was passiert, wenn mehrere Knoten vorhanden sind, die Abfrage nicht funktioniert.

Antwort

1

Add-Namespace zu Ihrer Suchanfrage:

Declare @XML XML 
SET @XML = 
'<?xml version="1.0" encoding="UTF-8"?> 
<Dealer schemaID="DL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.abc.zy/kudos/kentucy/ik schema13_dealer(dl).xsd"> 
    <Head> 
     <ImporterNr>ZZ840</ImporterNr> 
     <ForwarderNr>XYZA</ForwarderNr> 
     <RecordType>MR</RecordType> 
     <Filename>FZ12325</Filename> 
     <Items> 
     <Item> 
      <AddressType>L</AddressType> 
      <DealerNr>KZ DEALER LLC</DealerNr> 
      <ShortName>KZ D </ShortName> 
      <DealerName>DEALER T </DealerName> 
      <Street>Riverpol Romerro Calle 31D No. 12-25</Street> 
      <Country>SG </Country> 
      <ZIP>1234</ZIP> 
      <Town>MCGY</Town> 
     </Item> 
     </Items> 
    </Head> 
    </Dealer>' 

;WITH XMLNAMESPACES ('http://www.abc.zy/kudos/kentucy' as ns1) 
SELECT 
    Cust.value('(ns1:ImporterNr)[1]', 'nvarchar(50)') AS 'ImporterNr', 
    Cust.value('(ns1:ForwarderNr)[1]', 'nVarchar(50)') AS 'ForwarderNr', 
    Cust.value('(ns1:Items/ns1:Item/ns1:AddressType)[1]', 'nVarchar(50)') AS 'AddressType' 
FROM 
    @XML.nodes('/ns1:Dealer/ns1:Head') AS AOC(Cust) 

Oder es von XML entfernen.

+0

Es hat funktioniert Vielen Dank. – explore365

+0

Ich möchte nur wissen, was passiert, wenn mehrere Knoten vorhanden sind. ie explore365

+0

@ explore365 aktualisieren Sie Ihre Frage bitte, oder erstellen Sie eine neue – Backs