2017-01-25 11 views
0

に変換されます。xmlファイルを解析し、xmlタグ名が 'key'、innerXMLが 'value'であるOrderedDictionaryデータ型に格納しています。値が読み取られ、OrderedDictionary変数に格納されるまでは正常に動作します。自動的に型文字列の値がboolean型のC#

Screenshot showing Debugger OrderedDictionary values

私はKeyValuePairOrderedDictionaryを読むしようとすると、キー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 + ")"); 
} 

これは誰でも助けることができる私は

<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> 

を解析しようとしていたサンプルxmlです私はこの問題に関して?

編集(1):Fees900.00としてフェッチする必要がありましたが、どのようにブール値に変換されるのでしょうか。私がこれを避けることができる方法はありますか?

編集(2):追加されたXMLサンプルは

+0

データベースにブール型の列があり、ブール値「False」の代わりに文字列値「False」を挿入しようとしているようです。数字やブール値を引用符で囲む必要はありません –

+0

間違いを避けるためにブール値を '0'と '1'で挿入してみてください – Svekke

+0

@SergeyBerezovskiy Bro、しかし私はクエリに関与していません。私はちょうど1つの変数から別の変数にそれを取っています。データベース操作が不要 – sapphirebox001

答えて

0

MSDNに記載の foreach (DictionaryEntry de in DictXmlRecordColumns)にコード foreach (KeyValuePair<string, string> kvp in DictXmlRecordColumns)のラインを固定することにより、それを解決しました。 それは働いた。 お時間をいただきありがとうございました。

関連する問題