SQL Server 2000的sp_xml_preparedocument中 - 为了得到一个节点的innerxml /的innerText

StackOverflow https://stackoverflow.com/questions/2252180

  •  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>\
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top