Solved

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

Posted on 2008-10-23
6
1,081 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
How our DevOps Teams Maximize Uptime

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us. Read the use case whitepaper.

 
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

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Are you ready to implement Active Directory best practices without reading 300+ pages? You're in luck. In this webinar hosted by Skyport Systems, you gain insight into Microsoft's latest comprehensive guide, with tips on the best and easiest way…

749 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