2010-06-29 38 views
4

System.Author Windows屬性是多值字符串。 Windows搜索將此值作爲DataColumn中的字符串數組返回。 (該列的數據類型爲string[]String()。)當我在生成的數據表上調用WriteXML方法時,出現以下InvalidOperationException異常。無法爲DataTable編寫XML,因爲Windows搜索返回作者的字符串數組屬性

有沒有辦法指定數據表的xml序列化器用於特定的列或特定的數據類型?

基本上,我怎樣才能使WriteXML與這個數據表一起工作?

System.InvalidOperationException: System.String類型[]不 實現IXmlSerializable的接口 因此無法與 序列繼續進行。

+0

請說明如何創建數據表... – Yahia 2012-01-24 22:58:51

回答

1

你可以很容易地複製你的DataTable,將有問題的作者列更改爲一個字符串,並將字符串[]數據與適當的分隔符如「|」要麼 」; 」。

DataTable xmlFriendlyTable = oldTable.Clone(); 
xmlFriendlyTable.Columns["Author"].DataType = typeof(String); 
xmlFriendlyTable.Columns["Author"].ColumnMapping = MappingType.Element; 
foreach(var row in oldTable.Rows) { 
    object[] rowData = row.ItemArray; 
    object[] cpyRowData = new object[rowData.Length]; 
    for(int i = 0; i<rowData.Length; i++) { 
     if(rowData[i] != null && rowData[i].GetType() == typeof(String[])) { 
      cpyRowData[i] = String.Join("; ", (rowData[i] as String[])); 
     } else { 
      cpyRowData[i] = rowData[i]; 
     } 
     xmlFriendlyTable.Rows.Add(cpyRowData); 
    } 
} 
xmlFriendlyTable.WriteXml(...); 

注:上面寫了在Web瀏覽器中,所以可能有語法錯誤。

+0

我建議將數組更改爲'List '而不是使用分隔符,甚至。 – 2012-01-26 04:56:49

相關問題