SQL Server 2000 sp_xml_preparedocument: per ottenere innerxml/innertext di un nodo
-
20-09-2019 - |
Domanda
Ho alcuni dati come in fondo.Utilizzo la procedura memorizzata di SQL Server 2000 per elaborare questi dati utilizzando sp_xml_preparedocument .
Vorrei ottenere i dati all'interno del nodo PartAuxiliaryID così come sono di seguito (l'xml esatto così com'è, non i valori o l'attributo) in una variabile.Quale sarà il modo migliore per farlo nel processo memorizzato utilizzando sp_xml_preparedocument
<Info name="quoteNumber">962445</Info>
<Info name="shipSourceType">INTERNAL</Info>
<Data>
<Item>
<ItemID>
<PartID>1234</PartID>
<PartAuxiliaryID>
<Info name="quoteNumber">962445</Info>
<Info name="shipSourceType">INTERNAL</Info>
</PartAuxiliaryID>
</ItemID>
</Item></Data>
Nessuna soluzione corretta
Altri suggerimenti
Ho trovato la risposta
opzione 1
DECLARE @xmlData varchar(3000)
SET @xmlData = '<Data>
<Item>
<ItemID>
<PartID>1234</PartID>
<PartAuxiliaryID>
<Info name="quoteNumber">962445</Info>
<Info name="shipSourceType">INTERNAL</Info>
</PartAuxiliaryID>
</ItemID>
</Item></Data>'
DECLARE @idoc int, @intRet int
DECLARE @URL VARCHAR(1000)
EXEC @intRet= sp_xml_preparedocument @idoc OUTPUT, @xmlData
SELECT *
FROM OPENXML (@idoc, '/Data/Item/ItemID/PartAuxiliaryID')
WITH (PartAuxiliaryID varchar(2000) '@mp:xmltext')
EXEC sp_xml_removedocument @idoc
-------------------------------------------------------------------------------
--will get the following
<PartAuxiliaryID><Info name="quoteNumber">962445</Info><Info name="shipSourceType">INTERNAL</Info></PartAuxiliaryID>
opzione 2
DECLARE @xmlData varchar(3000)
SET @xmlData = '<Data>
<Item>
<ItemID>
<PartID>1234</PartID>
<PartAuxiliaryID>
<Info name="quoteNumber">962445</Info>
<Info name="shipSourceType">INTERNAL</Info>
</PartAuxiliaryID>
</ItemID>
</Item></Data>'
DECLARE @idoc int, @intRet int
DECLARE @URL VARCHAR(1000)
EXEC @intRet= sp_xml_preparedocument @idoc OUTPUT, @xmlData
SELECT *
FROM OPENXML (@idoc, '/Data/Item/ItemID/PartAuxiliaryID/Info')
WITH (PartAuxiliaryID varchar(2000) '@mp:xmltext')
EXEC sp_xml_removedocument @idoc
otterrà quanto segue su due righe
<Info name="quoteNumber">962445</Info>
<Info name="shipSourceType">INTERNAL</Info>\
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow