2014-07-04 36 views
0

我有一個關於用C#寫入xml的問題。我想要這種結構;從C寫入xml#

<directory_move> 
    <folder_path> 
     <source_path>...</source_path> 
     .. 
     .. 
    </folder_path> 
    <properties> 
     <aaabbcc>....</aaabbcc> 
     .. 
     .. 
    </properties> 
</directory_move> 

我試了這麼多,但無法獲得我想要的。 你能給個建議嗎,我該怎麼做?

這是我的代碼

 XElement element = new XElement("DIRECTORY_MOVE"); 

     foreach (string sourceDirName in listArray) 
     { 
      element.Add(new XElement("SOURCE_PATH", sourceDirName)); 
     } 

     element.Add(new XElement("DESTINATION_PATH", destination)); 


     if (rdbtnDoLater) 
     { 
      element.Add(new XElement("RDBTNDOLATER", "checked")); 
     } 

     if (rdbtnDoImmediately) 
     { 
      element.Add(new XElement("RDBTNDOIMMEDIATELY", "checked")); 
     } 

     if (chkIsOverwrite) 
     { 
      element.Add(new XElement("CHKISOVERWRİTE", "checked")); 
     } 

     if (chkExitWhenFinish) 
     { 
      element.Add(new XElement("CHKEXITWHENFINISH", "checked")); 
     } 

     if (chkFolderQuestion) 
     { 
      element.Add(new XElement("CHKFOLDERQUESTION", "checked")); 
     } 
+2

你的問題需要更多的細節。 您能否提供您嘗試生成XML的C#代碼? – alexandrekow

+0

+1用於修復OP以包含您的代碼。 – HuorSwords

+0

請參閱我在答案中所做的修改,我認爲它應該接近您的要求。 – Gimly

回答

1

使用Linq to XML

XElement example = 
    new XElement("directory_move", 
     new XElement("folder_path", 
      new XElement("source_path", "..."), 
      new XElement("source_path", "...") 
     ), 
     new XElement("properties", 
      new XElement("aaabbcc", ...) 
     ) 
    ); 

example.WriteToFile(...) 

編輯:你的代碼的問題是,您要添加的一切的根元素,所以一切都將是這個孩子根。

你需要做的是重現層次結構,就像我在我的例子中那樣。

XElement root = new XElement("DIRECTORY_MOVE"); 
XElement folderPath = new XElement("folder_path"); 

root.Add(folderPath) 

foreach (string sourceDirName in listArray) 
{ 
    folderPath.Add(new XElement("SOURCE_PATH", sourceDirName)); 
} 

等等...

+0

非常感謝!這是我的問題的解決方案。 – TKsknl