为多个子项验证具有相同标记名称的 XML

Posted

技术标签:

【中文标题】为多个子项验证具有相同标记名称的 XML【英文标题】:Validation of a XML with same Tag name for multiple children 【发布时间】:2015-05-06 11:08:36 【问题描述】:

我想在一个名为 Default value.Ex 的标签下获取多个值

<DefaultValue>One </DefaultValue>
<DefaultValue>two</DefaultValue>
<DefaultValue>three</DefaultValue>

我想在一次验证中验证所有三个值。这意味着我的字符串可能包含任何一个值 One,two ,Three,..它应该验证它是否包含任何一个

 <?xml version="1.0" encoding="utf-8" ?>
 <ValidationList>
     <Validation>
         <FieldType>Auto Number</FieldType>
         <DataColumn>5</DataColumn>
         <ErrorMessage>Value cannot be null</ErrorMessage>
     </Validation>
     <Validation>
         <FieldType>Date Time</FieldType>
         <DataColumn>15</DataColumn>
         <ErrorMessage>Value cannot be null</ErrorMessage>
         <DefaultValues>kj</DefaultValues>
     </Validation>
</ValidationList>

我当前的代码是:

GetFieldTypeRow = ds.Tables["Validation"].Select("FieldType='"  + xFieldTypeCell.Value2 + "'");

if (GetFieldTypeRow.Length == 1 )

     iFieldValueCol = Convert.ToInt32(GetFieldTypeRow[0 ["Default Values"].ToString());

     if(xFieldValueCell.Value2== "A")
     
         DataRow ResRow = ResultDt.NewRow();
         ResRow["WorkSheetName"] = MySheet.Name.ToString();
         ResRow["DataFieldType"] = xFieldTypeCell.Value2;
         ResRow["AtRow"] = xFieldValueCell.Row.ToString();
         ResRow["ErrorMessage"] = "Finished";
         ResultDt.Rows.Add(ResRow);
      

我已将 XML 数据存储在数据集中,并且每次都使用单行的标签名称访问数据集。我的表由四列组成。

数据字段、数据列、错误消息、默认值。

我想一次检查默认值标签下的三个值,我该怎么做?

【问题讨论】:

添加一段代码以显示您正在尝试的内容并详细说明问题。 示例数据也不会有害 日期时间15值不能为空kjDate15值不能为空P Florian Schmidinger ,A|F|B..如果验证结果包含 A、F、B 中的任何一个,则一次尝试验证结果应该为真。我正在使用 Xml 文件,当我读取标签时,XML 文件有一个名为 Defaultvalues 的标签/默认值>。单值效果很好。请帮帮我。 添加您尝试的代码的 sn-p 和示例数据...编辑问题...不评论...更难阅读 【参考方案1】:

对这个问题仍然不完全满意,但让我试一试。

首先让我指出,默认值通常是单个值。 此值通常在您添加新行时自动设置,或者在您未为该字段分配值时设置为该值。所以你宁愿需要一个名为ValidValues的列。

现在,如果您要检查此列中的每个值:

string[] validValues = /*whereever you get the field from*/.Split('|');
bool valid = validValues.Contains(/*whatever value you want to check*/);

【讨论】:

Florian Schmidinger y......我不知道如何拆分值。实际上我的 XML 文件已预加载。整个 XML 文件已加载并存储在 Datatable 中。每次都在检查值该表。该表现在在默认值 coulum 下存储一个值是 [A]。所以如果我的字符串的值 [A] 比两者都好。如果我的字符串有 [B] 它显示错误,因为在数据表中它只有 Ai 想要那个表的列中应该有多个值,例如 A、B、C,这样如果我的字符串有这 3 个值中的任何一个,它应该可以正常工作, @nanthakumar 问题是我仍然无法从您发布的内容中弄清楚您的代码应该如何工作。该代码甚至没有为我编译,因为它有严重的错误,例如: iFieldValueCol = Convert.ToInt32(GetFieldTypeRow[0 ["Default Values"].ToString());它也不是很可读……即使是我的编辑。我想帮助你,但你必须准确地指出你的问题才能得到准确的答案。我是一名 MCP,但我不是向导,也不是这个论坛的其他用户。 Florian Schmidinger...我明白了...谢谢...正如你推荐的那样,我只使用 split.method.thank you @nanthakumar 无需说谢谢,但不客气。如果我的回答解决了问题,您应该考虑接受答案(答案左侧的小检查符号)。它给了我们一点声誉,论坛的其他用户也看到了问题已经解决,所以这对我们所有人都有好处。 Florian Schmidinger ..当然我会照你说的做的..我完全是这个论坛的新手。还没有学到东西。

以上是关于为多个子项验证具有相同标记名称的 XML的主要内容,如果未能解决你的问题,请参考以下文章

使用 jquery 验证器验证具有相同名称的多个文本框仅验证第一个输入

XML 和 XSD 验证失败:元素同时具有“类型”属性和“匿名类型”子项

具有相同元素名称但属性值不同的XML的XSD架构[关闭]

当多个输入具有相同名称时,根据输入类型设置 jquery 表单验证

如何提取具有相同名称的 XML 标记/实体?

引导验证器检查多个空复选框