Solved

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

Posted on 2008-10-23
6
1,080 Views
Last Modified: 2013-12-17
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

0
Comment
Question by:Todd Gerbert
  • 3
  • 3
6 Comments
 
LVL 6

Expert Comment

by:RishadanPort
ID: 22790316
Seems to me that that file structure is unique, and you will have to create your own parsing routine
0
 
LVL 6

Expert Comment

by:RishadanPort
ID: 22790340
looks pretty painful to generate something that will read an XML file to parse this, rather then write the parser itself
0
 
LVL 33

Author Comment

by:Todd Gerbert
ID: 22792899
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
DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

 
LVL 33

Accepted Solution

by:
Todd Gerbert earned 0 total points
ID: 22922314
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
 
LVL 6

Expert Comment

by:RishadanPort
ID: 22923685
gl in the future
0
 
LVL 33

Author Comment

by:Todd Gerbert
ID: 22923788
Care to elaborate? ;)

(Sorry, only GL I know is graphics lib OpenGL)
0

Featured Post

Webinar: Aligning, Automating, Winning

Join Dan Russo, Senior Manager of Operations Intelligence, for an in-depth discussion on how Dealertrack, leading provider of integrated digital solutions for the automotive industry, transformed their DevOps processes to increase collaboration and move with greater velocity.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question