XElement => 在运行时添加子节点
Posted
技术标签:
【中文标题】XElement => 在运行时添加子节点【英文标题】:XElement => Add children nodes at run time 【发布时间】:2012-01-23 10:21:39 【问题描述】:所以让我们假设这是我想要实现的目标:
<root>
<name>AAAA</name>
<last>BBBB</last>
<children>
<child>
<name>XXX</name>
<last>TTT</last>
</child>
<child>
<name>OOO</name>
<last>PPP</last>
</child>
</children>
</root>
不确定使用 XElement 是否是最简单的方法 但这是我到目前为止所拥有的:
XElement x = new XElement("root",
new XElement("name", "AAA"),
new XElement("last", "BBB"));
现在我必须根据我拥有的一些数据添加“孩子”。 可能有 1,2,3,4 ...
所以我需要遍历我的列表以获取每个孩子
foreach (Children c in family)
x.Add(new XElement("child",
new XElement("name", "XXX"),
new XElement("last", "TTT"));
问题:
这样做我会错过“儿童父节点”。 如果我只是在foreach之前添加它,它将被呈现为一个封闭的节点
<children/>
这不是我们想要的。
问题:
如何在第一部分添加一个父节点以及我的列表中的多少?
【问题讨论】:
【参考方案1】:试试这个:
var x = new XElement("root",
new XElement("name", "AAA"),
new XElement("last", "BBB"),
new XElement("children",
from c in family
select new XElement("child",
new XElement("name", "XXX"),
new XElement("last", "TTT")
)
)
);
【讨论】:
【参考方案2】: XElement root = new XElement("root",
new XElement("name", "AAA"),
new XElement("last", "BBB"));
XElement children = new XElement("children");
foreach (Children c in family)
children.Add(new XElement("child",
new XElement("name", c.Name),
new XElement("last", c.Last));
root.Add(children);
【讨论】:
【参考方案3】:var children = new XElement("children");
XElement x = new XElement("root",
new XElement("name", "AAA"),
new XElement("last", "BBB"),
children);
foreach (Children c in family)
children.Add(new XElement("child",
new XElement("name", "XXX"),
new XElement("last", "TTT"));
【讨论】:
以上是关于XElement => 在运行时添加子节点的主要内容,如果未能解决你的问题,请参考以下文章