Using C# .Net 2.0 to parse a text file.

Looking for some advice on how to go about parsing data out of a text file - just need enough help to get started down the right road.  Or if there's an open source library available that'll do the job...I have no interest in re-inventing the wheel!

The text file I have to work with is like the one below; I need to extract a couple bits of information out of the header (like invoice number, which warehouse, customer PO) and information out of the line items, and my intent is to populate a strongly typed dataset.

I think I could hard-code a parsing routine pretty easily, but I was hoping to have something like an XML file with parsing rules since the format may change in the future, and the format could be different from warehouse to warehouse - and with the parsing rules in an external XML file it's easy to change, and I could have different XML files to accomodate more than one format (especially if it ends up being someone not familiar with programming).
12:04:18                                                             23 OCT 2008
                     * * *   P I C K    T I C K E T   * * *        PAGE  1 OF  2
INVOICE NO. 123456            WAREHOUSE 12-A
    REF NO. 123456
 
CUST NO. 123456      PH                SALE TYPE WHLS/C
 
      SOLD TO:                            SHIP TO:
      DOE,JOHN                            DOE,JOHN
      123 MAIN ST                         123 MAIN ST
      METROPOLIS, US 12345-1234           METROPOLIS, US 12345-1234
 
 
PO NO. CUST-PO-HERE  SHIP VIA SHIP-METHOD-HERE
PC PART-NO................. Q.O. BIN..... O.H. DESC..............
PN                   123456    1      A12    5 TEST PART
PN                   789012    1      B34    5 ANOTHER TEST PART
 
 
--- Snip some unknown number of line items on page 1 --
 
12:04:18                                                             23 OCT 2008
                     * * *   P I C K    T I C K E T   * * *        PAGE  1 OF  2
INVOICE NO. 123456            WAREHOUSE 12-A
    REF NO. 123456
 
CUST NO. 123456      PH                SALE TYPE WHLS/C
 
      SOLD TO:                            SHIP TO:
      DOE,JOHN                            DOE,JOHN
      123 MAIN ST                         123 MAIN ST
      METROPOLIS, US 12345-1234           METROPOLIS, US 12345-1234
 
 
PO NO. CUST-PO-HERE       SHIP VIA SHIP-METHOD-HERE
PC PART-NO................. Q.O. BIN..... O.H. DESC..............
PN                   345678    1      C56      TEST
PN                   901234    1      D78      TEST
                             TOT PC    4

Open in new window

LVL 33
Todd GerbertIT ConsultantAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

RishadanPortCommented:
Seems to me that that file structure is unique, and you will have to create your own parsing routine
0
RishadanPortCommented:
looks pretty painful to generate something that will read an XML file to parse this, rather then write the parser itself
0
Todd GerbertIT ConsultantAuthor Commented:
Agreed.

But, if the vendor supplying this data decides to change their format it would be much easier to just adjust my parsing rules XML file, as opposed to re-writing code - especially if I happen to not be at the same company (I don't want to leave solutions behind that they can't support without me).  Plus, then I'd have re-usable code.
0
Cloud Class® Course: MCSA MCSE Windows Server 2012

This course teaches how to install and configure Windows Server 2012 R2.  It is the first step on your path to becoming a Microsoft Certified Solutions Expert (MCSE).

Todd GerbertIT ConsultantAuthor Commented:
I haven't found a simple solution, and I'm slightly disinclined to write my own grammar/compiler, so I've decided to go ahead and code a simple parsing routine in C#, but I've left that code in an external text file that's compiled at run-time - at least this way I can make adjustments fast, and maybe someone else besides me will stand a chance of tweaking it if need-be.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
RishadanPortCommented:
gl in the future
0
Todd GerbertIT ConsultantAuthor Commented:
Care to elaborate? ;)

(Sorry, only GL I know is graphics lib OpenGL)
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.