2014-11-12 3 views
0

Образец Xml СтруктураЧтение Структура XML в SQL Server 2012

<?xml version="1.0" encoding="UTF-8"?> 
<XmlSerializableHashtable xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Entries> 
     <Entry> 
     <key xsi:type="xsd:string">col1</key> 
     <value xsi:type="xsd:string">500</value> 
     </Entry> 
     <Entry> 
     <key xsi:type="xsd:string">col2</key> 
     <value xsi:type="xsd:string">0/60,1/1000</value> 
     </Entry> 
     <Entry> 
     <key xsi:type="xsd:string">col3</key> 
     <value xsi:type="xsd:string">localhost</value> 
     </Entry> 
    </Entries> 
</XmlSerializableHashtable> 

Нет я пытаюсь получить значение, где ключ col3

Я пытаюсь с XQUERY

Declare @x xml; 
Set @x = (Select valuefrom sometable) 

Select @x.query('/Entries/Entry/') 

ответ

0

Этот запрос будет полезно.

DECLARE @xmlData AS XML 
DECLARE @sRawData AS VARCHAR(2000) 

SET @sRawData = '<?xml version="1.0" encoding="UTF-8"?> 
<XmlSerializableHashtable xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Entries> 
     <Entry> 
     <key xsi:type="xsd:string">col1</key> 
     <value xsi:type="xsd:string">500</value> 
     </Entry> 
     <Entry> 
     <key xsi:type="xsd:string">col2</key> 
     <value xsi:type="xsd:string">0/60,1/1000</value> 
     </Entry> 
     <Entry> 
     <key xsi:type="xsd:string">col3</key> 
     <value xsi:type="xsd:string">localhost</value> 
     </Entry> 
    </Entries> 
</XmlSerializableHashtable>' 

SET @xmlData = CAST(@sRawData AS XML) 

SELECT MainDataCenter.Col.value('(key)[1]','varchar(max)') AS [key] 
     ,MainDataCenter.Col.value('(value)[1]','varchar(max)') AS Value 
FROM @xmlData.nodes('/XmlSerializableHashtable/Entries/Entry') AS MainDataCenter(Col) 
WHERE MainDataCenter.Col.value('(key)[1]','varchar(max)') = 'col3'