Thursday, 15 July 2010

c# - Convert multiple tables to xml file -



c# - Convert multiple tables to xml file -

i have info in sql server need convert xml files, 1 per customer. have 2 sql queries, customers , messages.

i have xsd file given requirement.

what's efficient way generate particular xml file?

update: efficient, mean either fast processing, or simple code. i'm not concerned speed because little files. thanks.

this sample xml given 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>

are open language chance? vb.net has nice built-in xml back upwards produces valid xml without having play around strings much:

class="lang-vb prettyprint-override">' customers database context of form each c in customers dim mydata = <?xml version="1.0" encoding="utf-8"?> <program xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="program.xsd"> <customer> <cid><%= c.cid %></cid> <clientname><%= c.clientname %></clientname> <subscriberid><%= c.subscriberid %></subscriberid> </customer> <createdon><%= c.createdon %></createdon> <message> <messageid deliverychannel=<%= c.deliverychannel %>>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> mydata.save("filename here", saveoptions.none) next

c# sql-server xml

No comments:

Post a Comment