Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
vmurali
Yak Posting Veteran
88 Posts |
Posted - 2007-07-30 : 03:45:19
|
| I have a xml and I need to parse it and store the values into database.<campaignrequest> <requestor> <emailaddress>test@test.net</emailaddress> <name>CS Tester</name> <company>EEE</company> <phone>425-283-1480</phone> </requestor> <sponsor> <alias>test@test.net</alias> <name>CCC Sponsor</name> </sponsor></campaignrequest>I need to parse the above xml and store the values in Contacts Table. |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-07-30 : 04:07:38
|
Something like thisSELECT emailaddress, name, company, phoneFROM OPENXML (@h, '/campaignrequest/requestor')WITH ( emailaddress VARCHAR(100) 'emailaddress', name VARCHAR(100) 'name', company VARCHAR(100) 'company', phone VARCHAR(100) 'phone' )SELECT alias, nameFROM OPENXML (@h, '/campaignrequest/sponsor')WITH ( alias VARCHAR(100) 'alias', name VARCHAR(100) 'name' ) Or try thisSELECT emailaddress, name_r, company, phone, alias, name_sFROM OPENXML (@h, '/campaignrequest/requestor')WITH ( emailaddress VARCHAR(100) 'emailaddress', name_r VARCHAR(100) 'name', company VARCHAR(100) 'company', phone VARCHAR(100) 'phone', alias VARCHAR(100) '../sponsor/alias', name_s VARCHAR(100) '../sponsor/name' ) E 12°55'05.25"N 56°04'39.16" |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-07-30 : 04:18:54
|
Complete code here-- Prepare sample dataDECLARE @h INT, @XML VARCHAR(8000)SET @XML = '<campaignrequest> <requestor> <emailaddress>test@test.net</emailaddress> <name>CS Tester</name> <company>EEE</company> <phone>425-283-1480</phone> </requestor> <sponsor> <alias>test@test.net</alias> <name>CCC Sponsor</name> </sponsor></campaignrequest>'EXEC sp_xml_preparedocument @h OUTPUT, @XML-- Get the requestorsSELECT emailaddress, name, company, phoneFROM OPENXML (@h, '/campaignrequest/requestor')WITH ( emailaddress VARCHAR(100) 'emailaddress', name VARCHAR(100) 'name', company VARCHAR(100) 'company', phone VARCHAR(100) 'phone' )-- Get the sponsorsSELECT alias, nameFROM OPENXML (@h, '/campaignrequest/sponsor')WITH ( alias VARCHAR(100) 'alias', name VARCHAR(100) 'name' )-- Get all 1SELECT emailaddress, name_r, company, phone, alias, name_sFROM OPENXML (@h, '/campaignrequest/requestor')WITH ( emailaddress VARCHAR(100) 'emailaddress', name_r VARCHAR(100) 'name', company VARCHAR(100) 'company', phone VARCHAR(100) 'phone', alias VARCHAR(100) '../sponsor/alias', name_s VARCHAR(100) '../sponsor/name' )-- Get all 2SELECT emailaddress, name_r, company, phone, alias, name_sFROM OPENXML (@h, '/campaignrequest/sponsor')WITH ( emailaddress VARCHAR(100) '../requestor/emailaddress', name_r VARCHAR(100) '../requestor/name', company VARCHAR(100) '../requestor/company', phone VARCHAR(100) '../requestor/phone', alias VARCHAR(100) 'alias', name_s VARCHAR(100) 'name' )-- Get all 3SELECT emailaddress, name_r, company, phone, alias, name_sFROM OPENXML (@h, '/campaignrequest')WITH ( emailaddress VARCHAR(100) 'requestor/emailaddress', name_r VARCHAR(100) 'requestor/name', company VARCHAR(100) 'requestor/company', phone VARCHAR(100) 'requestor/phone', alias VARCHAR(100) 'sponsor/alias', name_s VARCHAR(100) 'sponsor/name' )EXEC sp_xml_removedocument @h E 12°55'05.25"N 56°04'39.16" |
 |
|
|
spirit1
Cybernetic Yak Master
11752 Posts |
Posted - 2007-07-30 : 04:30:39
|
and using the built in xml datatype functions:declare @xml XMLSELECT @xml = '<campaignrequest><requestor><emailaddress>test@test.net</emailaddress><name>CS Tester</name><company>EEE</company><phone>425-283-1480</phone></requestor><sponsor><alias>test@test.net</alias><name>CCC Sponsor</name></sponsor></campaignrequest>'-- in one tableSELECT -- requestor part T.c.query('requestor/emailaddress').value('.[1]', 'nvarchar(max)'), T.c.query('requestor/name').value('.[1]', 'nvarchar(max)'), T.c.query('requestor/company').value('.[1]', 'nvarchar(max)'), T.c.query('requestor/phone').value('.[1]', 'nvarchar(max)'), -- sponsor part T.c.query('sponsor/alias').value('.[1]', 'nvarchar(max)'), T.c.query('sponsor/name').value('.[1]', 'nvarchar(max)')FROM @xml.nodes('/campaignrequest') T(c)-- in two tables-- requestor partSELECT T.c.query('emailaddress').value('.[1]', 'nvarchar(max)'), T.c.query('name').value('.[1]', 'nvarchar(max)'), T.c.query('company').value('.[1]', 'nvarchar(max)'), T.c.query('phone').value('.[1]', 'nvarchar(max)')FROM @xml.nodes('/campaignrequest/requestor') T(c)-- sponsor partSELECT T.c.query('alias').value('.[1]', 'nvarchar(max)'), T.c.query('name').value('.[1]', 'nvarchar(max)') FROM @xml.nodes('/campaignrequest/sponsor') T(c)_______________________________________________Causing trouble since 1980blog: http://weblogs.sqlteam.com/mladenp |
 |
|
|
|
|
|
|
|