Search code examples
.netc#-4.0hierarchical-datasourceforgefilehelpers

FileHelpers supports Hierarchical files?


excuse-me if my english is bad... I'm Brazilian.

FileHelpers supports Hierarchical files?

I work with flat files, that have hierarchical records. I don't found this feature in documentation.

Thanks! Allan


Solution

  • Yes, you can use the MasterDatail way if two levels, or the MultirecordEngine if you need to parse three or more record formats.

    Master Detail:

    http://www.filehelpers.net/example/MasterDetail/SimpleMasterDetail/

    For this file with customers as master record and orders as detail:

    10248|VINET|5|04071996|01081996|16071996|3|32.38 
    10249|TOMSP|6|05071996|16081996|10071996|1|11.61 
    ALFKI;Alfreds Futterkiste;Maria Anders;Sales Representative;Obere Str. 57;Berlin;Germany 
    ANATR;Ana Trujillo Emparedados y helados;Ana Trujillo;Owner;Avda. de la Constitución 2222;México D.F.;Mexico 
    10250|HANAR|4|08071996|05081996|12071996|2|65.83 
    10111314012345 
    11101314123456 
    

    You must use something like:

    RecordAction ExampleSelector(string record)
    {
       if (Char.IsLetter(record[0]))
          return RecordAction.Master;
       else
          return RecordAction.Detail;
    }
    
    var engine = new MasterDetailEngine<Customers, Orders>(new MasterDetailSelector(ExampleSelector));
    
    // to Read use:
    MasterDetails[] res = engine.ReadFile("TestIn.txt");
    

    Multirecord

    http://www.filehelpers.net/example/Advanced/MultiRecordSample/

    Regards