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"));
}
Проблема:
Проделав этот путь, я пропущу "родитель детей node".
Если я просто добавлю его перед foreach, он будет отображаться как закрытый node
<children/>
и это НЕ то, что мы хотим.
Вопрос:
Как я могу добавить к первой части родительский node и сколько у меня список?
Ответы
Ответ 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"));
}