XElement => добавить дочерние узлы во время выполнения
Итак, предположим, что это то, что я хочу достичь:
<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-ю часть родительский узел и столько, сколько есть в моем списке?
3 ответов
попробуйте это:
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")
)
)
);
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);
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"));
}