То, что у вас там, выглядит правильно, хотя я бы переименовал элементы «Адреса» и «Телефонные номера» в «Адрес» и «Телефонный номер» соответственно. Это подразумевало бы XML как следующее:
<Customer>
<CustomerCode>1234</CustomerCode>
<Name>Customer</Name>
...
<Address>
...
</Address>
<Address>
...
</Address>
<PhoneNumber>
...
</PhoneNumber>
<PhoneNumber>
...
</PhoneNumber>
</Customer>
В качестве альтернативы вы можете захотеть обернуть повторяющиеся элементы Address и PhoneNumber в адреса и номера телефонов - это часто упрощает жизнь, если вы пытаетесь сопоставить с WCF DataContracts:
<xs:element name="Addresses">
<xs:complexType>
<xs:sequence>
<xs:element name="Address" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Street1" type="xs:string" />
<xs:element name="Street2" type="xs:string" />
<xs:element name="City" type="xs:string" />
<xs:element name="State" type="xs:string" />
<xs:element name="Zip" type="xs:string" />
<xs:element name="Country" type="xs:string" />
<xs:element name="Description" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Это даст вам что-то вроде:
<Customer>
<CustomerCode>1234</CustomerCode>
<Name>Customer</Name>
...
<Addresses>
<Address>
...
</Address>
<Address>
...
</Address>
</Addresses>
<PhoneNumbers>
<PhoneNumber>
...
</PhoneNumber>
<PhoneNumber>
...
</PhoneNumber>
</PhoneNumbers>
</Customer>