मान लें कि आपके पास आपका XML एक SQL सर्वर वैरिएबल में है जिसे @XML
. कहा जाता है , आप मूल XQuery . का उपयोग कर सकते हैं SQL सर्वर 2005 में समर्थन और इसे और अधिक सुरुचिपूर्ण ढंग से और कुशलता से करने के लिए नया:
DECLARE @XML XML = '...(your XML here).....'
SELECT
RootID = @xml.value('(/Root/@ID)[1]', 'int'),
ConditionSetOperator = XC.value('@Operator', 'varchar(50)'),
ConditionID = XC2.value('@ID', 'int'),
ConditionOperator = XC2.value('@Operator', 'varchar(50)')
FROM
@Xml.nodes('//ConditionSet') AS XT(XC)
CROSS APPLY
xc.nodes('Condition') AS XT2(XC2)
यह मुझे
. का आउटपुट देता है
XQuery ऑपरेटरों जैसे .nodes()
. के साथ या .value()
, आप आसानी से एक XML दस्तावेज़ को रिलेशनल डेटा में "श्रेड" कर सकते हैं और आवश्यकतानुसार स्टोर कर सकते हैं।
@xml.nodes('//ConditionSet')
. पर पहली कॉल प्रत्येक मिलान नोड के लिए एक "छद्म" तालिका मिलेगी - इसलिए प्रत्येक <ConditionSet>
नोड "छद्म" तालिका में वापस आ जाएगा XT
कॉलम के रूप में XC
, और फिर मैं .value()
जैसे XQuery विधियों का उपयोग करके उस XML खंड से आसानी से विशेषताएँ (या XML तत्व) प्राप्त कर सकता हूँ ।
या मैं उप-नोड्स की सूची भी ले सकता हूं <Condition>
उनमें से प्रत्येक के लिए <ConditionSet>
नोड्स - CROSS APPLY
. का उपयोग करके दूसरी कॉल के साथ .nodes()