c# - pertenece - XElement=> Agregar nodos secundarios en tiempo de ejecución
modificar elemento xml c# (3)
Prueba esto:
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")
)
)
);
Asumamos que esto es lo que quiero lograr:
<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>
No estoy seguro de si usar XElement es la forma más sencilla
pero esto es lo que tengo hasta ahora:
XElement x = new XElement("root",
new XElement("name", "AAA"),
new XElement("last", "BBB"));
Ahora tengo que agregar los "niños" en función de algunos datos que tengo.
Podría haber 1,2,3,4 ...
entonces necesito iterar a través de mi lista para obtener cada niño
foreach (Children c in family)
{
x.Add(new XElement("child",
new XElement("name", "XXX"),
new XElement("last", "TTT"));
}
PROBLEMA:
Haciendo esto, me faltará el "nodo padre de NIÑOS". Si solo lo agrego antes del foreach, se representará como un nodo cerrado
<children/>
y eso NO es lo que queremos
PREGUNTA:
¿Cómo puedo agregar a la primera parte un nodo padre y tantos como mi lista?
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 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);