2015-09-29 185 views
-1

我想在同一個元素中添加許多具有某些屬性的元素。這裏是我的代碼,如何在同一元素中添加多個屬性元素?

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"); 

它給這樣的輸出如下:

<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循環輸出。請指導我。提前致謝。

回答

1

那麼基本上for循環應只有包含創建GEH元素。你可以在循環外創建DEF元素...

但是,我還強烈建議使用LINQ to XML而不是舊的XmlDocument API ......它更簡單。在這種情況下,代碼應該是這樣的:

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", "") 
        ) 
     ) 
    ) 
); 
0

移動的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"); 

產生

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

只要移動代碼之外的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");​ 
相關問題