Hello Everyone,
I am trying to append the items to xml keeping the same format of the xml items.
I have this model created in C#.
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public class ProjectEnvironment
{
[XmlElement(ElementName = "ProjectId")]
public int ProjectId { get; set; }
[XmlElement(ElementName = "ProjectName")]
public string ProjectName { get; set; }
[XmlElement(ElementName = "ProjectApIUrl")]
public string ProjectApIUrl { get; set; }
[XmlElement(ElementName = "ProjectUrl")]
public string ProjectUrl { get; set; }
public List<Environment> Environments { get; set; }
}
public class Environment
{
[XmlElement(ElementName = "EnvId")]
public string EnvId { get; set; }
[XmlElement(ElementName = "EnvName")]
public string EnvName { get; set; }
}
I have this xml file format, where we can any number of Environment tags under Environments
<ProjectEnvironment>
<ProjectId>584</ProjectId>
<ProjectName>ToolsProject</ProjectName>
<ProjectApIUrl>https:
<ProjectUrl>https:
<Environments>
<Environment>
<EnvId>3814</EnvId>
<EnvName>SiT</EnvName>
</Environment>
<Environment>
<EnvId>3786</EnvId>
<EnvName>E1</EnvName>
</Environment>
<Environment>
<EnvId>4038</EnvId>
<EnvName>E2</EnvName>
</Environment>
<Environment>
<EnvId>4039</EnvId>
<EnvName>E3</EnvName>
</Environment>
<Environment>
<EnvId>4040</EnvId>
<EnvName>E4</EnvName>
</Environment>
<Environment>
<EnvId>4041</EnvId>
<EnvName>PERF</EnvName>
</Environment>
</Environments>
</ProjectEnvironment>
I have added this below block of code in MVC API controller.
public void AddEnvironmentDetails()
{
XDocument _XDocument = XDocument.Load(@"C:\Content\test.xml");
_XDocument.Element("ProjectEnvironments").Add(
new XElement("ProjectEnvironment",
new XElement("ProjectId", "584"),
new XElement("ProjectName", "PremierTools"),
new XElement("ProjectApIUrl", "https://test.example.com/api/v4/projects/584/deployments"),
new XElement("ProjectUrl", "https://test.exmple.com/Tools/API"),
new XElement("Environments",
new XElement("Environment",
new XElement("EnvId", "3814"),
new XElement("EnvName", "SiT")
),
new XElement("Environment",
new XElement("EnvId", "3786"),
new XElement("EnvName", "E1")
),
new XElement("Environment",
new XElement("EnvId", "4038"),
new XElement("EnvName", "E2")
),
new XElement("Environment",
new XElement("EnvId", "4039"),
new XElement("EnvName", "E3")
),
new XElement("Environment",
new XElement("EnvId", "4040"),
new XElement("EnvName", "E4")
),
new XElement("Environment",
new XElement("EnvId", "4041"),
new XElement("EnvName", "PERF")
)
)));
_XDocument.Save(@"C:\Content\test.xml");
}
using this code I am able to append the items keeping the same format, but want to know how can I do it dynamically If I have more environments to show using either foreach or for loop?
Could anyone help in achieving this, it will be of great help.
Thanks in advance
What I have tried:
I have tried in my api controller using some help from this link
Adding elements to an xml file in C# - Stack Overflow[
^]