System.Author属性是一个多值字符串。Windows搜索将此值作为DataColumn中的字符串数组返回。(该列的数据类型为string[]或String()。)当我对生成的数据表调用WriteXML方法时,我会得到以下InvalidOperationException异常。
是否有方法为特定列或特定数据类型指定数据表的xml序列化程序?
基本上,我如何使WriteXML使用这个数据表?
System.InvalidOperationException:类型System.String[]没有实现IXmlSerializable接口,因此不能继续序列化.
发布于 2012-01-25 16:03:45
您可以轻松地复制您的DataTable,将违规的Authors列更改为一个字符串,并使用一个适当的分隔符(如“AC.26”或";“)连接string[]数据。
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( ... );注:上述内容是在浏览器中编写的,因此可能会出现语法错误。
https://stackoverflow.com/questions/3145351
复制相似问题