【问题标题】:XElement => Add children nodes at run timeXElement => 在运行时添加子节点
【发布时间】: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/>

这不是我们想要的。

问题:

如何在第一部分添加一个父节点以及我的列表中的多少?

【问题讨论】:

    标签: c# xml linq-to-xml xelement


    【解决方案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")); 
        } 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多