I need to format an XML to a given hierarchy from a list (List<>). The list contains, for the banking information, data spread across multiple rows as shown in the image.
The XML output needs to be formatted like this:
<ROOT>
  <DocumentElement>
    <Supplier>
      <Company>STV</Company>
      <Code>000199</Code>
      <Name>TrafTrans</Name>
      <BankAccounts>
        <SupplierBankAccount>
          <Bban>220-012510-63</Bban>
          <Name>B1</Name>
        </SupplierBankAccount>
        <SupplierBankAccount>
          <Bban>RUIL</Bban>
          <Name>RUIL</Name>
        </SupplierBankAccount>
      </BankAccounts>
      <SupplierAddresses>
        <SupplierAddress>
          <Type>PostalAddress</Type>
          <Name>Loc TrafTrans</Name>
          <IsDefault>true</IsDefault>
          <AddressParts>
            <SupplierAddressPart>
              <AddressPartKey>STREET_NAME</AddressPartKey>
              <AddressPartText>Somewhere</AddressPartText>
            </SupplierAddressPart>
            <SupplierAddressPart>
              <AddressPartKey>COUNTRY</AddressPartKey>
              <AddressPartText>SPAIN</AddressPartText>
            </SupplierAddressPart>
          </AddressParts>
        </SupplierAddress>
      </SupplierAddresses>
    </Supplier>
  </DocumentElement>
</ROOT>
I already have a method that converts a list to an XML and returns a string. But the problem is that this only formats one item from the list and there could be additional info in the following items.
public static string SuppliersToXML(List<SupplierItem> supplier)
{
    CultureInfo ci = new CultureInfo("en-US");
    XmlDocument doc = new XmlDocument();
    var root = doc.CreateElement("ROOT");
    var rootNode = doc.AppendChild(root);
    var docElem = doc.CreateElement("DocumentElement");
    var docElemNode = rootNode.AppendChild(docElem);
    foreach (var item in supplier)
    {
        var supplierElem = doc.CreateElement("Supplier");
        var companyElem = (XmlNode)doc.CreateElement("Company");
        companyElem.InnerText = item.Company.ToString();
        //more code...
        supplierElem.AppendChild(companyElem);
        //more code...
        }
    return doc.OuterXml;
}

 
    