Solved

How do I mimic a System.IO.Stream, if I have a String, instead of a string stored in a file?

Posted on 2007-03-28
4
188 Views
Last Modified: 2013-12-17
I have a class that is final.  I cannot change it.  The problem is that the class has a constructor of it's VB, but I don't care if the answer is C# based...it's a library.

Sub New ThisClass(ByVal reader As XMLTextReader)

Here's the issue I need to solve.  I do not have the information I want to pass in to this class stored in a file.  I have it stored in a string (ie.  like a file that's already read in).  Is there a way to mimic a System.IO.StreamReader, using an in memory string, instead of a file (which is just pointing to a string anyway?

Since I am desperate for an answer (deadlines. Ack!), I am offering 500 pts to the expert who can help me 'fake' a string by wrapping it into some kind of IO Stream, so that I can instantiate the XMLTextReader class as follows:

Dim sinmemoryfile As String

Dim ostream [some kind of IOStream in memory] = New [some kind of IO.Stream in memory](sinmemoryfile)
Dim oxmlreader As XmlTextReader = New XmlTextReader(ostream (as System.IO.Stream))

Do you understand the dilemma I have?  I don't need to read the file in!  It's already read (and is fact, never in a file).  I do not want to have to save this string to a file and then pass in the file--that's incredibly inefficent and then I'd have to keep track of a ton of files (never mind naming conventions, etc.)

Is there some way to create an System.IO.Stream that uses a string?

Thanks in advance for your expertise!
0
Comment
Question by:louisiana_blues
  • 2
4 Comments
 
LVL 11

Assisted Solution

by:Babycorn-Starfish
Babycorn-Starfish earned 125 total points
ID: 18812554
what about a memory stream?
0
 
LVL 11

Assisted Solution

by:Babycorn-Starfish
Babycorn-Starfish earned 125 total points
ID: 18812565
0
 
LVL 24

Accepted Solution

by:
DBAduck - Ben Miller earned 375 total points
ID: 18812568
There is a StringReader class in System.IO that takes a String.
Then you can use the XmlTextReader to get at it like this:

Dim sinmemoryfile as String
Dim ostream as StringReader = New StringReader(sinmemoryfile)
Dim oxmlreader as XmlTextReader = CType(XmlTextReader.Create(ostream), XmlTextReader)

Then use the XmlTextReader. (or in any case you can use the XmlReader class which is what XmlTextReader returns)

Ben.
0
 

Author Comment

by:louisiana_blues
ID: 18812600
Hey dbaduck:

Thanks dude.  I will give that a try.  If it works, you get the points.  Thanks to the others.   I was looking for something including code, not a link that I would have read to infer an answer...

I will share the points, but dbaduck will get the most if his/her solution works.  Hope that's okay!

Okay, I checked it and it works.  You are indeed experts!  You all jumped on that question like it was a happy pill. ;-)
0

Featured Post

DevOps Toolchain Recommendations

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

Question has a verified solution.

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

Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
Parsing a CSV file is a task that we are confronted with regularly, and although there are a vast number of means to do this, as a newbie, the field can be confusing and the tools can seem complex. A simple solution to parsing a customized CSV fi…
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

776 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