it-swarm-pt.tech

XElement => Adicionar nós filhos em tempo de execução

Então, vamos assumir que é isso que eu quero alcançar:

<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>

Não tenho certeza se o uso do XElement é a maneira mais simples
mas é isso que tenho até agora:

 XElement x = new XElement("root",
                  new XElement("name", "AAA"),
                  new XElement("last", "BBB"));

Agora eu tenho que adicionar os "filhos" com base em alguns dados que tenho.
Pode haver 1,2,3,4 ...

então eu preciso percorrer minha lista para obter todas as crianças

foreach (Children c in family)
{
    x.Add(new XElement("child", 
              new XElement("name", "XXX"),
              new XElement("last", "TTT")); 
} 

PROBLEMA:

Fazendo dessa maneira, sentirei falta do "Nó pai de CRIANÇAS". Se eu apenas adicioná-lo antes do foreach, ele será renderizado como um nó fechado

<children/>

e não é isso que queremos.

PERGUNTA:

Como posso adicionar à 1ª parte um nó pai e quantos a minha lista tiver?

34
SF Developer

Tente o seguinte:

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")
                        )
             )
        );
34
dtb
 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);
29
Barka
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")); 
} 
10
Muhammad Hasan Khan