[英]Dynamically adding XElements to XAttribute using C#
<?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. 我正在尝试将Server XElements和端口XElements添加到现有的XML DOC中。 I tried by using for & forEach to add port Xelements to server Xelement.
我尝试使用for&forEach将端口Xelements添加到服务器Xelement。 The trick here is the count of port XElemnts vary from server to server.
这里的技巧是端口XElemnts的数量因服务器而异。 Please help me out of this.
请帮我解决这个问题。 The following is the sample code, I have tried.
以下是示例代码,我试过了。
var xdoc = XDocument.Load("C:\\sample.xml");
var server = new XElement("server",
new XAttribute("serverid", ServerId),
new XAttribute("name", ServerName),
(foreach(var sample in test)
{
new XElement("port",
new XAttribute("asset", PortName),
new XAttribute("portid", PortId));
});
It's strange that you are not using sample
variable in a loop. 奇怪的是,你没有在循环中使用
sample
变量。 But if you want to add new port
element for each item in test
collection, then you should project each item to XElement
and return collection of these elements: 但是,如果要为
test
集合中的每个项添加新的port
元素,则应将每个项目投影到XElement
并返回这些元素的集合:
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)
))
);
Keep in mind, that foreach
loop does not return anything. 请记住,
foreach
循环不会返回任何内容。 But you need to provide value to server element you are creating. 但是您需要为正在创建的服务器元素提供价值。
xdoc.Root.Add(server);
xdoc.Save(fileName);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.