Solved

SQL 2008 results to XML multiple namespaces

Posted on 2012-04-11
1
418 Views
Last Modified: 2012-07-11
I have some values in a temp table that I need to export in XML format.  The XML has multiple levels and namespaces which is throwing me off a bit.

This is the data set:
CREATE TABLE #shipments	(	OrderId int,
				dateShippedGMT datetime,
				carrierCode varchar(20),
				classCode varchar(20),
				trackingNumber varchar(50),
				shipmentCost numeric(17,2),
				shipmentTaxCost numeric(17,2))
							

declare @DeveloperKey varchar(100),
	@Password varchar(100),
	@accountID varchar(100)
		
select	@DeveloperKey = '1234567890',
	@Password = '9999',
	@accountID = '54321'	

INSERT #shipments
VALUES (123456, '2012-04-11T12:05:33', 'UPS', 'STD', '314159265358979323', 2.50, 0)

INSERT #shipments
VALUES (234567, '2012-04-11T12:06:13', 'UPS', 'STD', '314159265358979324', 1.50, 0)

SELECT * FROM #shipments
DROP TABLE #shipments

Open in new window

The XML format this needs to be exported to is:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://api.channeladvisor.com/webservices/">
   <soapenv:Header>
      <web:APICredentials>
         <web:DeveloperKey>1234567890</web:DeveloperKey>
         <web:Password>9999</web:Password>
      </web:APICredentials>
   </soapenv:Header>
   <soapenv:Body>
      <web:SubmitOrderShipmentList>
         <web:accountID>54321</web:accountID>
         <web:ShipmentList>
            <web:OrderShipmentList>
               <web:OrderShipment>
                  <web:OrderId>123456</web:OrderId>
                  <web:ShipmentType>Full</web:ShipmentType>
                  <web:FullShipment>
                     <web:dateShippedGMT>2012-04-11T12:05:33</web:dateShippedGMT>
                     <web:carrierCode>UPS</web:carrierCode>
                     <web:classCode>STD</web:classCode>
                     <web:trackingNumber>314159265358979323</web:trackingNumber>
                     <web:shipmentCost>2.50</web:shipmentCost>
                     <web:shipmentTaxCost>0</web:shipmentTaxCost>
                     <web:insuranceCost>0</web:insuranceCost>
                  </web:FullShipment>
               </web:OrderShipment>
               <web:OrderShipment>
                  <web:OrderId>234567</web:OrderId>
                  <web:ShipmentType>Full</web:ShipmentType>
                  <web:FullShipment>
                     <web:dateShippedGMT>2012-04-11T12:06:13</web:dateShippedGMT>
                     <web:carrierCode>UPS</web:carrierCode>
                     <web:classCode>STD</web:classCode>
                     <web:trackingNumber>314159265358979324</web:trackingNumber>
                     <web:shipmentCost>1.50</web:shipmentCost>
                     <web:shipmentTaxCost>0</web:shipmentTaxCost>
                     <web:insuranceCost>0</web:insuranceCost>
                  </web:FullShipment>
               </web:OrderShipment>               
            </web:OrderShipmentList>
         </web:ShipmentList>
      </web:SubmitOrderShipmentList>
   </soapenv:Body>
</soapenv:Envelope>

Open in new window

<web:DeveloperKey> needs to be populated with the variable @DeveloperKey
<web:Password> needs to be populated with the variable @Password
<web:accountID> needs to be populated with the variable @accountID
<web:dateShippedGMT> needs to be populated with #shipments.dateShippedGMT
<web:carrierCode> needs to be populated with #shipments.carrierCode
<web:classCode> needs to be populated with #shipments.classCode
<web:trackingNumber> needs to be populated with #shipments.trackingNumber
<web:shipmentCost> needs to be populated with #shipments.shipmentCost
<web:shipmentTaxCost> needs to be populated with #shipments.shipmentTaxCost

Any help would be appreciated.
0
Comment
Question by:Russell_Harper
1 Comment
 
LVL 75

Accepted Solution

by:
Anthony Perkins earned 500 total points
ID: 37832252
While you may be able to use FOR XML EXPLICIT to create that Xml document, it has way too many hierarchies and you would be best advised to use something like .NET to do it.
0

Featured Post

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
SSRS Subscription jobs disabled, yet still running 4 31
query execution hang 5 28
This query failed in sql 2014 5 29
export sql results to csv 6 34
In this article I will describe the Copy Database Wizard method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
JSON is being used more and more, besides XML, and you surely wanted to parse the data out into SQL instead of doing it in some Javascript. The below function in SQL Server can do the job for you, returning a quick table with the parsed data.
Via a live example, show how to backup a database, simulate a failure backup the tail of the database transaction log and perform the restore.
Via a live example, show how to shrink a transaction log file down to a reasonable size.

808 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question