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 &lt; and &gt; 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Ā®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to