PowerShellでDataSetのXMLの内容をシリアライズし、生成された文字列を再度デシリアライズする

修正前のテーブルの内容をXMLデータとして保存し、ログテーブルに格納することで、履歴を退避する


 Step1
   DataSetをシリアライズしXML形式の文字列を作成する

 Step2
   文字列をログテーブルへ保存する(普通にInsert)

 Step3
   ログテーブルに格納されているXML形式の文字列をDataSetにデシリアライズする

【サンプルソース】
 # テストデータ作成
[System.Data.DataTable]$dt = New-Object "System.Data.DataTable";
$dt.TableName = "dtMemo";
$dt.Columns.Add("col1",[string]);
$dt.Columns.Add("col2",[string]);
$dt.Columns.Add("col3",[string]);
$dt.Columns.Add("col4",[string]);
$dr = $dt.NewRow();
$dr["col1"]="sample1-1";
$dr["col2"]="sample1-2";
$dr["col3"]="sample1-3";
$dr["col4"]="sample1-4";
$dt.Rows.Add($dr);
$dr = $dt.NewRow();
$dr["col1"]="sample2-1";
$dr["col2"]="sample2-2";
$dr["col3"]="sample2-3";
$dr["col4"]="sample2-4";
$dt.Rows.Add($dr);

[System.Data.DataSet]$ds = New-Object "System.Data.DataSet";
$ds.Tables.Add($dt);
# XMLデータの取得
$strXML = $ds.GetXml() ;
# XMLの内容確認
Write-Host($strXML);
# 文字列のXMLを読み込んでDataSetを作成
[System.Data.DataSet]$dsFromXML = New-Object "System.Data.DataSet";
[System.Xml.XmlReaderSettings]$xmlSettings = New-Object "System.Xml.XmlReaderSettings";
$xmlSettings.Async = $true;
$sr = New-Object "System.IO.StringReader"$strXML;
$xmlDoc = [System.Xml.XmlReader]::Create($sr,$xmlSettings);
$dsFromXML.ReadXml($xmlDoc);
# 結果確認
$dsFromXML.GetXml();

0 件のコメント:

コメントを投稿

PowerShellでDataSetのXMLの内容をシリアライズし、生成された文字列を再度デシリアライズする

修正前のテーブルの内容をXMLデータとして保存し、ログテーブルに格納することで、履歴を退避する   Step1    DataSetをシリアライズしXML形式の文字列を作成する   Step2    文字列をログテーブルへ保存する(普通にInsert)   Step3    ログ...