FileHelpers - 使用ReadStringAsDT时,FieldOptional似乎不起作用

时间:2017-05-28 21:09:38

标签: c# xml filehelpers

我正在使用DelimitedFieldBuilder并将我的字段标记为FieldOptional = true

我后来创建了我的类构建器:

classBuilder = ClassBuilder.LoadFromXmlString(ColumnMappings);

我创建了我的引擎:

engine = new FileHelperEngine((classBuilder as DelimitedClassBuilder).CreateRecordClass());

然后我像这样填充数据集:

var myString = "01,122242843,456183,160823,0716,84,80,1\n02,456183,122242843,1,160822,,USD,1/\n03,008066662,USD,010,0,,,015\n88,125,,450,1134403,,,570/";

using(var dt = engine.ReadStringAsDT(myString))
{
    using (var ds = new DataSet())
    {
        ds.Tables.Add(dt);
        var myXml = ds.GetXml());
    }
}

这看起来非常简单。但是,缺少值的字段仍然由ds.GetXml()调用输出,如下所示:

<NewDataSet>
  <Table1>
    <ID>01</ID>
    <Credit>122242843/</Credit>
    <Field3>456183</Field3>
    <Field4>160823</Field4>
    <Field5>0716</Field5>
    <Field6>84</Field6>
    <Field7>80</Field7>
    <Field8>1</Field8>
    <Field9 />
  </Table1>
</NewDataSet>

注意Field9。它使用FieldOptional = true进行标记。我的印象是,通过将其标记为可选,如果没有值,则不会在最终的XML中输出Field元素。是不是这样,或者我错过了另一个属性设置?

任何帮助都将不胜感激。

亲切的问候每个人!

0 个答案:

没有答案