2012-12-18 33 views
1

我需要將XML屬性值保存到數據庫中,如果勾選複選框,則使用信息。如果選中複選框,則屬性值爲「TRUE」,否則爲false。當我使用foreach語句時,通常會分配最後一個枚舉值。在foreach語句中更改xml屬性c#

這裏是我的代碼的一部分:

XmlAttribute xmlAttribute = xmlDoc.CreateAttribute("BooleanValue"); 
foreach (string value in list) //list is a List<object> 
{ 
    XmlNode xmlNode = xmlDoc.CreateNode(XmlNodeType.Element, "VALUE", ""); 
    if (checkBox1.Checked || 
     checkBox2.Checked || 
     checkBox3.Checked) 
    xmlAttribute.Value = "TRUE"; 

    if (!checkBox1.Checked || 
     !checkBox2.Checked || 
     !checkBox3.Checked) 
    xmlAttribute.Value = "FALSE"; 

    xmlNode.Attributes.Append(xmlAttribute); 
    xmlNode.InnerText = val; 
    childNode.AppendChild(xmlNode); 
} 

當我運行我的應用程序,我得到一個XML屬性xmlAttribute 「FALSE」 值反正。

我需要什麼有: 我需要有以下XML:

<ROOT><NODE><VALUE ATTRIBUTE="TRUE">Value 1</VALUE></NODE> 
     <NODE><VALUE ATTRIBUTE="TRUE">Value 2</VALUE></NODE> 
     <NODE><VALUE ATTRIBUTE="FALSE">Value 3</VALUE></NODE> 
     <NODE><VALUE ATTRIBUTE="FALSE">Value 4</VALUE></NODE> 
     <NODE><VALUE ATTRIBUTE="TRUE">Value 5</VALUE></NODE> 
     <NODE><VALUE ATTRIBUTE="FALSE">Value 6</VALUE></NODE> 
</ROOT> 

我居然得到:

<ROOT><NODE><VALUE ATTRIBUTE="FALSE">Value 1</VALUE></NODE> 
     <NODE><VALUE ATTRIBUTE="FALSE">Value 2</VALUE></NODE> 
     <NODE><VALUE ATTRIBUTE="FALSE">Value 3</VALUE></NODE> 
     <NODE><VALUE ATTRIBUTE="FALSE">Value 4</VALUE></NODE> 
     <NODE><VALUE ATTRIBUTE="FALSE">Value 5</VALUE></NODE> 
     <NODE><VALUE ATTRIBUTE="FALSE">Value 6</VALUE></NODE> 
</ROOT> 

因爲在C#FALSE值停留在最後的位置在foreach循環中

問題是:我該如何分配正確的屬性值。謝謝

+2

你保存文件修改後? – zimdanen

+0

編號XML保存到數據庫字段 – Kirill

+0

我仍然認爲這是一個布爾邏輯問題,如果您的任何複選框未選中,您將永遠不會返回任何內容,而是返回false。如果您使用ELSE或ELSE IF,則相同。 – Amicable

回答

3

我認爲你的布爾邏輯是錯誤的。您目前有

If any are checked 
    mark True 
If any are unchecked 
    mark False 

我說你可能想使用一個else第一if之後,而不是寫一個新的條件。

+0

我試圖用「else」而不是「if」語句。另外,我嘗試使用switch-case語句。所以,問題保持不變 – Kirill

+0

@ user1913479我認爲你的問題陳述不清楚。你期待什麼行爲?你能向我們展示一個你想要的XML和你正在使用的XML的例子嗎? –

0
if (checkBox1.Checked || 
     checkBox2.Checked || 
     checkBox3.Checked) 
    xmlAttribute.Value = "TRUE"; 

    if (!checkBox1.Checked || 
     !checkBox2.Checked || 
     !checkBox3.Checked) 
    xmlAttribute.Value = "FALSE"; 

因此,如果任何一個框被選中,您將得到TRUE,然後用FALSE覆蓋它,如果其中任何一個未被選中。即你已經結束了與

if (checkBox1.Checked && 
     checkBox2.Checked && 
     checkBox3.Checked) 
    xmlAttribute.Value = "TRUE" 
else 
    xmlAttribute.Value = "FALSE" 

我在takimng胡亂猜測這不是你想要的