У меня есть хранимая процедура, которая дает следующие результаты, количество строк, возвращаемых из хранимой процедуры, может варьироваться в зависимости от переданного параметра.
Я хотел бы создать XML-файл примерно так:
<?xml version="1.0" encoding="UTF-8"?>
<apiRequest>
<orders>
<order>
<JobAddressId>Order 001</JobAddressId>
<DepotCode>journease</DepotCode>
<ScheduledDate>05/05/2014</ScheduledDate>
<client>
<Customer>Customer 1</Customer>
<ContactName>Gary Davis</ContactName>
<ContactTel>100000001</ContactTel>
<contactEmail>jerry@gmail.com</contactEmail>
</client>
<location>
<Postcode>Customer Location 1</Postcode>
<address>5 HEDDERWICK HILL,WEST BARNS,DUNBAR,E. LOTHIAN,EH42 1XF</address>
<latitude>52.855864</latitude>
<longitude>-1.457062</longitude>
</location>
<dropWindows>
<dropWindow>
<TimeWindowStart>05/05/2019 8:00</TimeWindowStart>
<TimeWindowEnd>05/05/2019 18:00</TimeWindowEnd>
</dropWindow>
</dropWindows>
<priority>3</priority>
<SpecialInstructions>some additional instructions</SpecialInstructions>
<stopSequence>first</stopSequence>
</order>
</orders>
</apiRequest>
Схема для этого xml следующая (любезно предоставлено Freeformatter.com)
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="apiRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="orders">
<xs:complexType>
<xs:sequence>
<xs:element name="order">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="JobAddressId"/>
<xs:element type="xs:string" name="DepotCode"/>
<xs:element type="xs:string" name="ScheduledDate"/>
<xs:element name="client">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="Customer"/>
<xs:element type="xs:string" name="ContactName"/>
<xs:element type="xs:int" name="ContactTel"/>
<xs:element type="xs:string" name="contactEmail"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="location">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="Postcode"/>
<xs:element type="xs:string" name="address"/>
<xs:element type="xs:float" name="latitude"/>
<xs:element type="xs:float" name="longitude"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="dropWindows">
<xs:complexType>
<xs:sequence>
<xs:element name="dropWindow">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="TimeWindowStart"/>
<xs:element type="xs:string" name="TimeWindowEnd"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element type="xs:byte" name="priority"/>
<xs:element type="xs:string" name="SpecialInstructions"/>
<xs:element type="xs:string" name="stopSequence"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Разделы вЗаказы XML, Client, Location и DropWindows должны увеличиваться в зависимости от возвращаемых строк.
Это то, что я пробовал до сих пор. Ссылка
Я использовал ссылку выше и сгенерировал следующий vb-файл с классами (Автоматически сгенерированное именование немного ненадежно, но эй хо)
Я бы хотелзнать, как сериализовать эти классы, я могу создать объект каждого класса, а затем объединить все объекты вместе, чтобы создать мой xml или использовать класс верхнего уровня (не уверен, какой класс верхнего уровня).