4

System.AuthorWindows プロパティは、複数値の文字列です。Windows Searchは、こ​​の値を DataColumn の文字列の配列として返します。(列のデータ型はstring[]orString()です。)結果のデータ テーブルでメソッドを呼び出すとWriteXML、次のInvalidOperationException例外が発生します。

特定の列または特定のデータ型に使用するデータ テーブルの xml-serializer を指定する方法はありますか?

WriteXML基本的に、このデータテーブルをどのように扱うことができますか?

System.InvalidOperationException: Type System.String[] は IXmlSerializable インターフェイスを実装していないため、シリアル化を続行できません。

4

1 に答える 1

1

DataTableを簡単にコピーして、問題のあるAuthors列をStringに変更し、「|」のような適切な区切り文字を使用して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( ... );

上記をWebブラウザで記述したため、構文エラーが発生する可能性があります。

于 2012-01-25T16:03:45.590 に答える