I need to get data from database, massage it into list of objects, then finally generate an XML file with a METADATA tag (expected result), I think those DATA PACKET, METADATA, etc.. tag is not manually written it, maybe there is some library in ASP.NET Core using C# able to generate it automatically when serializing the data into XML?
Here is the code I tried out, it didn't turns out to expected result as I need it.
public class Book
{
public string title;
public string author;
public string publisher;
public double price;
}
public void GenerateXML()
{
var overview = new List<Book>{
new Book()
{
title = "This is a book",
author = "Somebody wrote it",
publisher = "Someone published it",
price = 999.99
},
new Book()
{
title = "This is a book2",
author = "Somebody wrote it2",
publisher = "Someone published it2",
price = 101010
}
};
System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(Book));
var path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "//myXmFile.xml";
System.IO.FileStream file = System.IO.File.Create(path);
foreach (var item in overview)
{
writer.Serialize(file, item);
}
file.Close();
}
This code produces:
<?xml version="1.0" encoding="utf-8"?>
<Book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<title>
This is a book
</title>
<author>
Somebody wrote it
</author>
<publisher>
Someone published it
</publisher>
<price>
999.99
</price>
</Book>
<?xml version="1.0" encoding="utf-8"?>
<Book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<title>
This is a book2
</title>
<author>
Somebody wrote it2
</author>
<publisher>
Someone published it2
</publisher>
<price>
101010
</price>
</Book>
Expected result:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<DATAPACKET Version="2.0">
<METADATA>
<FIELDS>
<FIELD attrname="title" fieldtype="string"/>
<FIELD attrname="author" fieldtype="string"/>
<FIELD attrname="publisher" fieldtype="string"/>
<FIELD attrname="price" fieldtype="r8"/>
</FIELDS>
<PARAMS/>
</METADATA>
<ROWDATA>
<ROW title="This is a book" author="Somebody wrote it" publisher="Someone published it" price="999.99" />
<ROW title="This is a book2" author="Somebody wrote it2" publisher="Someone published it2" price="101010" />
</ROWDATA>
</DATAPACKET>
Is there any library in ASP.NET Core / C# able to generate this expected result?
Here is the code. I generated the class using https://xmltocsharp.azurewebsites.net/
Generated class.
I modified the generated code a little bit.
And here is the XML generation logic.
And the other class.
And here is the screenshot.