<?xml version="1.0" encoding="ISO-8859-1"?>
<servers>
<server serverid="server1" asset="Sample" >
<port portid ="port1" asset="Sample" ></port>
<port portid ="port2" asset="Sample" ></port>
</server>
<server serverid="server2" asset="Sample" >
<port portid ="port1" asset="Sample" ></port>
<port portid ="port2" asset="Sample" ></port>
<port portid ="port3" asset="Sample" ></port>
<port portid ="port4" asset="Sample" ></port>
</server>
<server serverid="server1" asset="Sample" >
<port portid ="port1" asset="Sample" ></port>
<port portid ="port2" asset="Sample" ></port>
<port portid ="port3" asset="Sample" ></port>
</server>
</servers>
I am trying to add Server XElements and port XElements to the existing XML DOC.I tried the following code,
int[] test = new int[3];
string[] PortName1 = new string[3];
string[] PortId1 = new string[3];
PortName1[0]="portname1";
PortName1[1] = "portname2";
PortName1[2] = "portname3";
PortId1[0] = "port1";
PortId1[1] = "port2";
PortId1[2] = "port3";
var fileName = @"C:\sample.xml";
var xdoc = XDocument.Load(fileName);
var server =
new XElement("server",
new XAttribute("serverid", ServerId),
new XAttribute("name", ServerName),
test.Select(sample =>
new XElement("port",
new XAttribute("asset", PortName),
new XAttribute("portid", PortId)
))
);
Everything is working fine,but the problem is PortName & PortId are string array variables.Dont know how to get indexed dynamic values for each iterate of "test".For me everytime it is getting the zero index values only.
If you're using .NET 4, you can just use Zip
:
var server =
new XElement("server",
new XAttribute("serverid", ServerId),
new XAttribute("name", ServerName),
PortName1.Zip(PortId1, (name, id) =>
new XElement("port",
new XAttribute("asset", name),
new XAttribute("portid", id)
))
);
If you're not using .NET 4 or later, you can implement Zip
very easily in your own code - Eric Lippert has sample code in a blog post.
(As a side note, I'd encourage you to follow .NET naming conventions - I'd change the names of PortId1
and PortName1
to portIds
and portNames
for example.)
See more on this question at Stackoverflow