CSVデータに基づいてxmlファイルを書き込むために、次のXMLアウトプターを使用しています。
public override void Output(IRow input, IUnstructuredWriter output)
{
IColumn badColumn = input.Schema.FirstOrDefault(col => col.Type != typeof(string));
if (badColumn != null)
{
throw new ArgumentException(string.Format("Column '{0}' must be of type 'string', not '{1}'", badColumn.Name, badColumn.Type.Name));
}
using (var writer = XmlWriter.Create(output.BaseStream, this.fragmentSettings))
{
writer.WriteStartElement(this.rowPath);
foreach (IColumn col in input.Schema)
{
var value = input.Get<string>(col.Name);
if (value != null)
{
// Skip null values in order to distinguish them from empty strings
writer.WriteElementString(this.columnPaths[col.Name] ?? col.Name, value);
}
}
}
}
それは非常にうまく機能し、ジョブはエラーなしで完全に終了しますが、ファイルをプレビューしてダウンロードすると、その xml ファイルの読み取りに失敗する原因となる別の余分な文字があります。適合レベルとしてフラグメントレベルと自動を試しました。
得られた私のサンプル出力は
2 つのタグの間の余分な文字が、ファイルの読み取り中に問題を引き起こしています。