C# XmlSerializer сериализует несколько элементов с одинаковым именем - PullRequest
0 голосов
/ 24 марта 2020

Мне нужно создать сериализуемый (XML) объект, который должен иметь три одинаковых значения AddressLine. Это требуется от DHL, для интеграции. Из документации:

<xsd:sequence>
<xsd:element name="CompanyName" type="CompanyNameValidator" />
<xsd:element name="AddressLine" type="AddressLine" minOccurs="1" maxOccurs="3"/>
<xsd:element name="City" type="City" minOccurs="0"/>

Мне нужно получить XML, который выглядит следующим образом.

<Consignee>
    <CompanyName>Company</CompanyName>
    <AddressLine>address 1</AddressLine>
    <AddressLine>address 2</AddressLine>        
    <AddressLine>address 3</AddressLine>        
    <City>City</City>
</Consignee>
  • Я попытался создать элементы с разными именами и установить новое имя с [XmlElement("AddressLine")], но это не работает.

    public string CompanyName { get; set; }
    
    
    public string AddressLine { get; set; }
    
    [XmlElement("AddressLine")]
    public string AddressLine1 { get; set; }
    
    [XmlElement("AddressLine")]
    public string AddressLine2 { get; set; }
    
    public string City { get; set; }
    

Сообщение об ошибке:

There was an error reflecting property 'AddressLine1'. ---> System.InvalidOperationException:
 The XML element 'AddressLine' from namespace '' is already present in the current scope. Use XML
 attributes to specify another XML name or namespace for the element.
  • Если я использую массив или список не очень хорошо или, по крайней мере, у меня ничего не получилось.

  • Моя последняя идея - сериализовать объект с AddressLine2 и AddressLine3 в строку и в значениях обрыва строки в AddressLine.

Где способ создания объекта, который после сериализации будет выглядеть в примере? Есть предложения?

Спасибо за ответы.

...