SQL Server 2000的sp_xml_preparedocument中 - 为了得到一个节点的innerxml /的innerText
-
20-09-2019 - |
题
我喜欢在底部的一些数据。我使用SQL Server 2000存储过程使用sp_xml_preparedocument中处理此数据。
我想节点PartAuxiliaryID内获取数据,因为它是下面(确切的XML因为它是,不是值或属性)的变量。什么将使用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>
没有正确的解决方案
其他提示
我找到答案
选项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>
选项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
将得到下面的作为两行
<Info name="quoteNumber">962445</Info>
<Info name="shipSourceType">INTERNAL</Info>\
不隶属于 StackOverflow