为多个子项验证具有相同标记名称的 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 数据存储在数据集中,并且每次都使用单行的标签名称访问数据集。我的表由四列组成。
数据字段、数据列、错误消息、默认值。
我想一次检查默认值标签下的三个值,我该怎么做?
【问题讨论】:
添加一段代码以显示您正在尝试的内容并详细说明问题。 示例数据也不会有害对这个问题仍然不完全满意,但让我试一试。
首先让我指出,默认值通常是单个值。
此值通常在您添加新行时自动设置,或者在您未为该字段分配值时设置为该值。所以你宁愿需要一个名为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 验证失败:元素同时具有“类型”属性和“匿名类型”子项