I am trying to generate XML like the below based on my class definition:
Final Expected XML:
<images>
<image id="100">
<url>www.abc.com</url>
</image>
<image id="200">
<url>www.pqr.com</url>
</image>
<image id="300">
<url>www.ooo.com</url>
</image>
<image id="400">
<url>www.ktr.com</url>
</image>
</images>
But I am getting below XML based on my class definition:
Incorrect XML:
<images>
<image>
<image>
<id>100</id>
<url>www.abc.com</url>
</image>
<image>
<id>200</id>
<url>www.pqr.com</url>
</image>
<image>
<id>300</id>
<url>www.ooo.com</url>
</image>
</image>
</images>
There are 2 problems in above XML :
1. Repetitive "Image
" tag which does not match with my Final Expected XML
structure.
<id>
tag should be with<image>
tag like this :<image id="1">
but instead it is generating inside tag as below :
Class definition :
public class property : root
{
public string languages { get; set; }
public images images { get; set; }
}
public class images
{
public List<image> image { get; set; }
}
public class image
{
public int id { get; set; }
public string url { get; set; }
}
public root GenerateRootObject(List<Product> products)
{
root root = new root
{
property = new List<property>()
{
}
};
foreach (var product in products)
{
var property = new property
{
images = GenerateImageTag(product.ImageGalleries);
};
root.property.Add(property);
}
}
public images GenerateImageTag(ICollection<ImageGallery> imagesFromDatabase)
{
var imageObj = new images();
imageObj.image = new List<image>();
foreach (var img in imagesFromDatabase)
{
imageObj.image.Add(new image
{
id = img.Id,
url = img.RelativeUrl
});
}
return imageObj;
}
Can someone please help me to fix this structure?