C# 如何在同一元素中添加多个属性元素?

C# 如何在同一元素中添加多个属性元素?,c#,xml,C#,Xml,我想在同一个元素中添加许多具有某些属性的元素。这是我的密码 XmlDocument doc = new XmlDocument(); XmlElement root = doc.CreateElement("ABC"); doc.AppendChild(root); for (int i = 0; i < 3; i++) { XmlElement anotherid; XmlElement id; id = doc.CreateElement("DEF");

我想在同一个元素中添加许多具有某些属性的元素。这是我的密码

XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("ABC");
doc.AppendChild(root);
for (int i = 0; i < 3; i++)
{
    XmlElement anotherid;
    XmlElement id;
    id = doc.CreateElement("DEF");
    anotherid = doc.CreateElement("GEH");
    anotherid.SetAttribute("Name", "");
    anotherid.SetAttribute("Button", "");
    root.AppendChild(id);
    id.AppendChild(anotherid);

}
doc.Save(@"C:\dummyxml.xml");
XmlDocument doc=新的XmlDocument();
xmlementroot=doc.CreateElement(“ABC”);
doc.AppendChild(根);
对于(int i=0;i<3;i++)
{
另一种;
xml元素id;
id=doc.CreateElement(“DEF”);
anotherid=doc.CreateElement(“GEH”);
SetAttribute(“名称”,“名称”);
SetAttribute(“按钮”和“”);
root.AppendChild(id);
id.AppendChild(另一个);
}
doc.Save(@“C:\dummyxml.xml”);
它给出如下输出:

<ABC>
  <DEF>
    <GEH Name="" Button="" />
  </DEF>
  <DEF>
    <GEH Name="" Button="" />
  </DEF>
  <DEF>
    <GEH Name="" Button="" />
  </DEF>
</ABC>

但我想要像这样的输出

   <ABC>
      <DEF>
        <GEH Name="" Button="" />
        <GEH Name="" Button=""/>
        <GEH Name="" Button=""/>
      </DEF>
    </ABC>


请不要忽略循环。我只想要带有for循环的输出。请引导我。提前感谢。

基本上,for循环的
应该只包含
GEH
元素的创建。您可以将
DEF
元素的创建移动到循环外部

但是,我还强烈建议使用LINQ转换为XML,而不是旧的XMLDocumentAPI。。。这要简单得多。在本例中,代码如下所示:

var doc = new XDocument(
    new XElement("ABC",
        new XElement("DEF",
            Enumerable.Range(1, 3)
                      .Select(ignored => new XElement("GEH",
                           new XAttribute("Name", ""),
                           new XAttribute("Button", "")
                      )
        )
    )
);

DEF
元素的声明向上移动一级

XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("ABC");
doc.AppendChild(root);
XmlElement id = doc.CreateElement("DEF");

for (int i = 0; i < 3; i++)
{
    XmlElement anotherid;
    anotherid = doc.CreateElement("GEH");
    anotherid.SetAttribute("Name", "");
    anotherid.SetAttribute("Button", "");
    root.AppendChild(id);
    id.AppendChild(anotherid);

}
doc.Save("dummyxml.xml");
XmlDocument doc=新的XmlDocument();
xmlementroot=doc.CreateElement(“ABC”);
doc.AppendChild(根);
xmlementid=doc.CreateElement(“DEF”);
对于(int i=0;i<3;i++)
{
另一种;
anotherid=doc.CreateElement(“GEH”);
SetAttribute(“名称”,“名称”);
SetAttribute(“按钮”和“”);
root.AppendChild(id);
id.AppendChild(另一个);
}
doc.Save(“dummyxml.xml”);
产生

<ABC>
  <DEF>
    <GEH Name="" Button="" />
    <GEH Name="" Button="" />
    <GEH Name="" Button="" />
  </DEF>
</ABC>

刚刚将代码移到for循环之外

XmlDocument doc = new XmlDocument();
            XmlElement root = doc.CreateElement("ABC");
            doc.AppendChild(root);

            XmlElement anotherid;
            XmlElement id;
            id = doc.CreateElement("DEF");

            for (int i = 0; i < 3; i++)
            {
                anotherid = doc.CreateElement("GEH");
                anotherid.SetAttribute("Name", "");
                anotherid.SetAttribute("Button", "");
                root.AppendChild(id);
                id.AppendChild(anotherid);

            }
            doc.Save(@"C:\dummyxml.xml");​
XmlDocument doc=新的XmlDocument();
xmlementroot=doc.CreateElement(“ABC”);
doc.AppendChild(根);
另一种;
xml元素id;
id=doc.CreateElement(“DEF”);
对于(int i=0;i<3;i++)
{
anotherid=doc.CreateElement(“GEH”);
SetAttribute(“名称”,“名称”);
SetAttribute(“按钮”和“”);
root.AppendChild(id);
id.AppendChild(另一个);
}
doc.Save(@“C:\dummyxml.xml”);​