I have this data in Sql Server that I need to convert to XML files, one per Customer. I have 2 sql queries, Customers and Messages.
I also have an XSD file that was given as a requirement.
What's the most efficient way to generate this particular XML file?
UPDATE: By efficient, I mean either fast processing, or simple to code. I'm not too concerned about speed because they are small files. Thanks.
This is the sample xml that was given to me:
<?xml version="1.0" encoding="UTF-8"?>
<Program xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="program.xsd">
<Customer>
<CId>6674</CId>
<ClientName>c1</ClientName>
<SubscriberId>1234</SubscriberId>
</Customer>
<CreatedOn>2014-06-17T19:09:53.960</CreatedOn>
<Message>
<MessageId DeliveryChannel="1">123456</MessageId>
<Prospect>
<Id>12345678</Id>
</Prospect>
<SentDate>2014-06-24T12:00:01</SentDate>
<CName>x1</CName>
<CNameId>1234</CNameId>
</Message>
<Message>
<MessageId DeliveryChannel="2">1236457</MessageId>
<Prospect>
<Id>12345679</Id>
</Prospect>
<SentDate>2014-06-24T12:00:02</SentDate>
<CName>x2</CName>
<CNameId>1235</CNameId>
</Message>
</Program>
Schema:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="Program">
<xs:complexType>
<xs:sequence>
<xs:element ref="Customer" minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="CreatedOn" type="xs:dateTime" minOccurs="1" maxOccurs="1"/>
<xs:element ref="Message" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Customer">
<xs:complexType>
<xs:sequence>
<xs:element name="CId" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="ClientName" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="SubscriberId" type="xs:integer" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Message">
<xs:complexType>
<xs:sequence>
<xs:element ref="MessageId" minOccurs="1" maxOccurs="1"/>
<xs:element ref="Prospect" minOccurs="1" maxOccurs="1"/>
<xs:element name="SentDate" type="xs:dateTime" minOccurs="1" maxOccurs="1"/>
<xs:element name="CName" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="CNameId" type="xs:integer" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Prospect">
<xs:complexType>
<xs:sequence>
<xs:element ref="Id" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Id">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Source" type="xs:string" default="default"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:simpleType name="DeliveryChannel">
<xs:restriction base="xs:integer">
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="4"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="MessageId">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="DeliveryChannel" type="DeliveryChannel"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>