【问题标题】:Change xml attribute in foreach statement c#在foreach语句c#中更改xml属性
【发布时间】:2012-12-19 02:12:57
【问题描述】:

我需要将 XML 属性值保存在数据库中,如果选中复选框,则使用信息。如果复选框被选中,则属性值为“TRUE”,否则为 false。当我使用foreach语句时,通常会分配最后一个枚举值。

这是我的代码的一部分:

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 循环中的最后一个位置

问题是:如何为我的属性分配正确的值。谢谢

【问题讨论】:

  • 修改后是否保存文件?
  • 没有。 XML 保存到数据库字段中
  • 我仍然认为这是一个布尔逻辑问题,如果您的任何复选框未选中,您将永远不会返回任何内容,而是返回 false。如果您使用 ELSE 或 ELSE IF,则相同。

标签: c# xml


【解决方案1】:

我认为你的布尔逻辑是错误的。你目前有

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

我想说您可能想在第一个 if 之后使用 else 而不是编写新条件。

【讨论】:

  • 我尝试使用“else”而不是“if”语句。另外,我尝试使用 switch-case 语句。所以,问题还是一样
  • @user1913479 我认为您的问题陈述不清楚。你期待什么行为?您能否向我们展示您想要的 XML 和您正在获取的 XML 的示例?
【解决方案2】:
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"

我在胡乱猜测这不是你想要的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 2014-05-20
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 2013-03-21
    • 2013-06-11
    相关资源
    最近更新 更多