Since DataSets and I are indelibly tied together let me note that Don is EXACTLY correct with his assertion here. I totally concur.
Thanks, Shawn Wildermuth Wildermuth Consulting Services, LLC http://adoguy.com C# MVP, MCSD.NET, Author and Speaker > -----Original Message----- > From: Discussion of advanced .NET topics. > [mailto:[EMAIL PROTECTED] On Behalf Of Don Demsak > Sent: Tuesday, October 10, 2006 11:15 AM > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > Subject: Re: [ADVANCED-DOTNET] Web services, DataSets and > making use of XSDs... > > Thanks Paul. I didn't want to rehash this, again. DATASETS > over Web Service = Very Bad. Only thing worse than that is > trying to send your business object over web services. The > idea is that a web service is sending a message of a specific > contract. A message my look and feel a lot like the business > object, but it usually has different behaviors, which means > you usually need a different set of classes to represent the message. > > Don Demsak > www.donxml.com > > > On 10/10/06, Paul van Brenk <[EMAIL PROTECTED]> wrote: > > > > That's the part you write. > > > > Paul > > > > -----Original Message----- > > From: Discussion of advanced .NET topics. > > [mailto:[EMAIL PROTECTED] On Behalf Of Ben Joyce > > Sent: Tuesday, October 10, 2006 14:57 > > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > > Subject: Re: [ADVANCED-DOTNET] Web services, DataSets and > making use > > of XSDs... > > > > Hi Paul. > > > > Thanks for your reply. I've looked at the XSD tool, looks handy... > > but I don't see any obvious way of populating my CustomerList with > > Customers - is this the part which I write or am I missing > something? > > > > I shall continue tinkering :) > > > > Cheers, > > > > Ben > > > > On 10/10/06, Paul van Brenk <[EMAIL PROTECTED]> wrote: > > > You don't want to return datasets/datatables from > webservices ever. > > (Lot > > > of good resources available why not.) > > > > > > You can use the xsd.exe command line tool to generate a > .cs (or .vb) > > > file containing the custom class as specified by the xsd > and return > > that > > > from your webmethod. The .Net framework will handle the > conversion > > > to and from xml for that class. > > > > > > Paul > > > > > > -----Original Message----- > > > From: Discussion of advanced .NET topics. > > > [mailto:[EMAIL PROTECTED] On Behalf Of > Ben Joyce > > > Sent: Tuesday, October 10, 2006 13:15 > > > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > > > Subject: [ADVANCED-DOTNET] Web services, DataSets and > making use of > > > XSDs... > > > > > > Hi all. > > > > > > I'm just getting in to some XSD programming and could do > with some > > > advice. This is quite a lengthy email for which I apologise in > > > advance. > > > > > > I've been asked to create a webservice with some methods, one of > > > which is to resturn some customer data. > > > > > > I am at the point where I would usually return my data like this: > > > > > > dstDataset.Tables(0).WriteXml(Response.OutputStream) > > > > > > Then the calling code would pick apart the response. > > > > > > However, I am now required to send a response something > like this... > > > which i believe is based on an XSD: > > > > > > <?xml version="1.0" encoding="ISO-8859-1"?> <CustomerFindResponse > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > > xsi:noNamespaceSchemaLocation="FindCustomer_response_OK.xsd"> > > > <Return>true</Return> > > > <CustomerList> > > > <Customer> > > > <Dealer></Dealer> > > > <TitleCode>5</TitleCode> > > > <Initials>A</Initials> > > > <CustomerNo>0</CustomerNo> > > > <Customertype>P</Customertype> > > > <Foren>ANDREW JAMES</Foren> > > > <Surn>PALMER</Surn> > > > <Company></Company> > > > <AddLine1></AddLine1> > > > <AddLine2>HASLINGTON</AddLine2> > > > <AddLine3></AddLine3> > > > <AddPosttown>Crewe</AddPosttown> > > > <PostCode></PostCode> > > > <HouseNumber>35</HouseNumber> > > > </Customer> > > > <Customer> > > > <Dealer></Dealer> > > > <TitleCode>3</TitleCode> > > > <Initials>A</Initials> > > > <CustomerNo>0</CustomerNo> > > > <Customertype>P</Customertype> > > > <Foren>ANDREW JAMES</Foren> > > > <Surn>PALMER</Surn> > > > <Company></Company> > > > <AddLine1></AddLine1> > > > <AddLine2>HASLINGTON</AddLine2> > > > <AddLine3></AddLine3> > > > <AddPosttown>Crewe</AddPosttown> > > > <PostCode></PostCode> > > > <HouseNumber>35</HouseNumber> > > > </Customer> > > > </CustomerList> > > > </CustomerFindResponse> > > > > > > And the accompanying XSD: > > > > > > <?xml version="1.0" encoding="UTF-8"?> <xs:schema > > > xmlns:xs="http://www.w3.org/2001/XMLSchema" > > > elementFormDefault="qualified"> > > > <xs:element name="CustomerFindResponse"> > > > <xs:complexType> > > > <xs:sequence> > > > <xs:element ref="Return"/> > > > <xs:element ref="CustomerList"/> > > > </xs:sequence> > > > </xs:complexType> > > > </xs:element> > > > <xs:element name="Return" type="xs:boolean"/> <xs:element > > > name="CustomerList"> > > > <xs:complexType> > > > <xs:sequence> > > > <xs:element maxOccurs="unbounded" ref="Customer"/> > > > </xs:sequence> > > > </xs:complexType> > > > </xs:element> > > > <xs:element name="Customer"> > > > <xs:complexType> > > > <xs:sequence> > > > <xs:element ref="Dealer"/> > > > <xs:element ref="TitleCode"/> > > > <xs:element ref="Initials"/> > > > <xs:element ref="CustomerNo"/> > > > <xs:element ref="Customertype"/> > > > <xs:element ref="Foren"/> > > > <xs:element ref="Surn"/> > > > <xs:element ref="Company"/> > > > <xs:element ref="AddLine1"/> > > > <xs:element ref="AddLine2"/> > > > <xs:element ref="AddLine3"/> > > > <xs:element ref="AddPosttown"/> > > > <xs:element ref="PostCode"/> > > > <xs:element ref="HouseNumber"/> > > > </xs:sequence> > > > </xs:complexType> > > > </xs:element> > > > <xs:element name="Dealer" type="xs:integer"/> <xs:element > > > name="TitleCode" type="xs:integer"/> <xs:element name="Initials" > > > type="xs:string"/> <xs:element name="CustomerNo" > > > type="xs:integer"/> <xs:element name="Customertype" > > > type="xs:string"/> <xs:element name="Foren" type="xs:string"/> > > > <xs:element name="Surn" type="xs:string"/> <xs:element > > > name="Company" type="xs:string"/> <xs:element name="AddLine1" > > > type="xs:string"/> <xs:element name="AddLine2" > type="xs:string"/> > > > <xs:element name="AddLine3" type="xs:string"/> <xs:element > > > name="AddPosttown" type="xs:string"/> <xs:element > name="PostCode" > > > type="xs:string"/> <xs:element name="HouseNumber" > > > type="xs:string"/> </xs:schema> > > > > > > My question is this: how do I use the XSD file in my code > to create > > > an XML document based on the schema? I believe once i > have created > > > such an entity i could manually walk the dataset and > create new XML nodes. > > > Is this the right way to do it? Am I even on the right track? > > > > > > My cheap and nasty alternative is to return the data like this: > > > > > > strXML = "<CustomerFindResponse > > > xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" > > > xsi:noNamespaceSchemaLocation=""FindCustomer_response_OK.xsd"">" > > > strXML += "<Return>true</Return>" > > > dstDataset.Tables(0).TableName = "Customer" > > > Dim strData As String = dstDataset.GetXml() strXML += > strData strXML > > > += "</CustomerFindResponse>" > > > > > > Return strXML > > > > > > But this involves a degree of hard-coding and whatsmore > the returned > > > XML is escaped (the < and > appear as < and > respectively) > > > > > > sigh - it's a bit of a nightmare! > > > > > > Any ideas or advice would really be appreciated. > > > > > > Cheers, > > > > > > Ben > > > > > > =================================== > > > This list is hosted by DevelopMentor(r) http://www.develop.com > > > > > > View archives and manage your subscription(s) at > > > http://discuss.develop.com > > > > > > =================================== > > > This list is hosted by DevelopMentor(r) http://www.develop.com > > > > > > View archives and manage your subscription(s) at > > http://discuss.develop.com > > > > > > > =================================== > > This list is hosted by DevelopMentor(r) http://www.develop.com > > > > View archives and manage your subscription(s) at > > http://discuss.develop.com > > > > =================================== > > This list is hosted by DevelopMentor(r) http://www.develop.com > > > > View archives and manage your subscription(s) at > > http://discuss.develop.com > > > > =================================== > This list is hosted by DevelopMentorR http://www.develop.com > > View archives and manage your subscription(s) at > http://discuss.develop.com > =================================== This list is hosted by DevelopMentorĀ® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com