类型字符串的自动值转换为布尔值C#

时间:2017-01-25 13:26:12

标签: c# .net

我正在解析xml文件并将其存储在OrderedDictionary数据类型中,其中xml标记名称为“key”,其innerXML为“value”。在读取值并将其存储在OrderedDictionary变量中之前,工作正常。

Screenshot showing Debugger OrderedDictionary values

当我尝试使用OrderedDictionary阅读KeyValuePair时,键Fees的值显示为False并抛出System.InvalidCastException。我知道这是一个类型转换问题,但我的问题是存储为'string'的值如何转换为'boolean'。

Image hyperlink - KeyValuePair shows Fees as False

这是处理此任务的一小段代码:

for (int j = 0; j < intXmlRecordFieldCount; j++) {
XmlTagname = xmlRootNode.ChildNodes[i].ChildNodes[j].Name.ToString().Trim();
xmlTagInnerValue = xmlRootNode.ChildNodes[i].ChildNodes[j].InnerXml.ToString().Trim();
DictXmlRecordColumns.Add(XmlTagname, xmlTagInnerValue);
}

foreach (KeyValuePair<string, string> kvp in DictXmlRecordColumns) {
    string xmlTagName = kvp.Key;
    string xmlInnerValue = kvp.Value;
    DataRow[] resultset= dsResult.Tables[0].Select("ColumnName='"+xmlTagName+"'");
    Console.WriteLine(resultset.Length);
    if (Int32.Parse(xmlInnerValue) >= MinValue&& Int32.Parse(xmlInnerValue) <= MaxValue) {
        string QueryParamColumnNames = null;
        string QueryParamColumnValues = null;
        foreach (KeyValuePair<string, string> SqlQueryParams in SqlQueryParams) {
                QueryParamColumnNames += SqlQueryParams.Key.Trim() + ',';
                QueryParamColumnValues += convertToSqlParams(SqlQueryParams.Value.Trim()) + ',';
        }
    QueryParamColumnValues = QueryParamColumnValues.TrimEnd(',');
    sqlInsertQueries.Add("INSERT INTO " + dbTableName + " (" + QueryParamColumnNames + ") values( " + QueryParamColumnValues + ")");
}

这是我打算解析的样本xml

<studentrecords>
<STUDENT_RECORDS>
    <RollNumber>1</RollNumber>
    <Name>Akshay</Name>
    <Gender>Male</Gender>
    <Fees>900.00</Fees>
</STUDENT_RECORDS>

<STUDENT_RECORDS> 
    <RollNumber>2</RollNumber>
    <Name>Alex</Name>
    <Age>8</Age>
    <Gender>Male</Gender>
    <Fees>900.00</Fees>
</STUDENT_RECORDS>

</studentrecords>

有人可以帮我解决这个问题吗?

编辑(1):我希望Fees被提取为900.00,但它是如何转换为布尔值的。我可以通过哪种方式避免这种情况?

编辑(2):添加了XML示例

1 个答案:

答案 0 :(得分:0)

通过修复代码行解决了这个问题 foreach (KeyValuePair<string, string> kvp in DictXmlRecordColumns)MSDN中所述的foreach (DictionaryEntry de in DictXmlRecordColumns)。 它奏效了。 感谢您的时间并帮助每个人。