Dzień dobry.
Panowie, męczę się okrutnie z serializacją do XMLa, a właściwie z takim przypadkiem jednym. Dostałem specyfikację od człowieka któremu chcę dostarczać informację o produktach i podał mi taką strukturę pliku xml (w uproszczeniu):
<?xml version="1.0" encoding="UTF-8"?>
<productsFeed>
<schemaVersion>1.0</schemaVersion>
<fileLastModificationDateTime>2018-07-26T10:15:30</fileLastModificationDateTime>
<productsData>
<product>
<identification>
<EANlist>
<EAN>0001</EAN>
<EAN>0002</EAN>
</EANlist>
<productId>id produktu</productId>
<manufacturerProductId>id produktu producemta</manufacturerProductId>
</identification>
<description>
<productName>nazwa produktu</productName>
<productDescription>opis produktu</productDescription>
<parametersList>
<parameter>
<parameterName>nazwa parametru</parameterName>
<parameterValue>wartosc</parameterValue>
<parameterUnit>jednostka</parameterUnit>
</parameter>
</parametersList>
</description>
</product>
<product>
<identification>
<EANlist>
<EAN>0003</EAN>
<EAN>0004</EAN>
</EANlist>
<productId>id produktu</productId>
<manufacturerProductId>id produktu producemta</manufacturerProductId>
</identification>
<description>
<productName>nazwa produktu</productName>
<productDescription>opis produktu</productDescription>
<parametersList>
<parameter>
<parameterName>nazwa parametru</parameterName>
<parameterValue>wartosc</parameterValue>
<parameterUnit>jednostka</parameterUnit>
</parameter>
</parametersList>
</description>
</product>
</productsData>
</productsFeed>
I teraz tak, zupełnie nie wiem czy dobrze robię czy źle, ale na początek stworzyłem sobie takie coś (niepełne odwzorowanie, ale na początek wystarcza):
public class productsFeed
{
public string schemaVersion;
public string fileLastModificationDateTime;
public ProdData productsData;
}
public class ProdData
{
public Product product;
}
public class Product
{
public Identifiaction identification;
public Description description;
}
public class Identifiaction
{
public string productId;
public string manufacturerProductId;
}
public class Description
{
public string productName;
public string productDescription;
}
I później wypełniam tą strukturę danymi
public void CreatePO(string filename)
{
XmlSerializer serializer = new XmlSerializer(typeof(productsFeed));
TextWriter writer = new StreamWriter(filename);
productsFeed po = new productsFeed();
po.schemaVersion = "1.0";
po.fileLastModificationDateTime = DateTime.Now.ToString();
ProdData pd = new ProdData();
Product pr = new Product();
Identifiaction ident = new Identifiaction();
Description desc = new Description();
po.productsData = pd;
pd.product = pr;
pr.identification = ident;
pr.description = desc;
ident.productId = "123";
ident.manufacturerProductId = "4567";
desc.productDescription = "Opis produktu";
desc.productName = "Nazwa produktu";
serializer.Serialize(writer, po);
writer.Close();
}
Wszystko jest spoko, tworzy mi plik, wygląda ok, tylko utknąłem w momencie takim że sekcja <product> jest powtarzalna... Dżizas no, nie wiem jak się za to zabrać, tworzyć jakąś listę? Jak?
Generalnie z taką płaską strukturą nie mam problemów bo pobieram sobie cały set danych z bazy, lecę po wierszach i odpowiednim konstruktorem podaję dane do listy którą następnie serializuję, ale jak się zagnieżdżają sekcje to nie wiem jak się do tego dobierać w ogóle i czy to co stworzyłem ma jakiś sens?