首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能WriteXML for DataTable,因为Windows返回String for Authors属性

不能WriteXML for DataTable,因为Windows返回String for Authors属性
EN

Stack Overflow用户
提问于 2010-06-29 22:50:05
回答 1查看 425关注 0票数 4

System.Author属性是一个多值字符串。Windows搜索将此值作为DataColumn中的字符串数组返回。(该列的数据类型为string[]String()。)当我对生成的数据表调用WriteXML方法时,我会得到以下InvalidOperationException异常。

是否有方法为特定列或特定数据类型指定数据表的xml序列化程序?

基本上,我如何使WriteXML使用这个数据表?

System.InvalidOperationException:类型System.String[]没有实现IXmlSerializable接口,因此不能继续序列化.

EN

回答 1

Stack Overflow用户

发布于 2012-01-25 16:03:45

您可以轻松地复制您的DataTable,将违规的Authors列更改为一个字符串,并使用一个适当的分隔符(如“AC.26”或";“)连接string[]数据。

代码语言:javascript
复制
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( ... );

注:上述内容是在浏览器中编写的,因此可能会出现语法错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3145351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档