SQL Server 2000 sp_xml_preparedocument - para obter innerxml/innerText de um nó
-
20-09-2019 - |
Pergunta
Eu tenho alguns dados como na parte inferior. Eu uso o SQL Server 2000 armazenado Proc para processar esses dados usando sp_xml_preparedocument.
Gostaria de obter os dados dentro do nó PartauxiliaryId, como estão abaixo (o XML exato como é, não os valores ou atributos) a uma variável. Qual será a melhor maneira de fazer isso no Proc armazenado usando 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>
Nenhuma solução correta
Outras dicas
Eu encontrei a resposta
Opção 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>
opção 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
receberá o seguinte como duas linhas
<Info name="quoteNumber">962445</Info>
<Info name="shipSourceType">INTERNAL</Info>\
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow