Write error on Read() ??

  • Thread starter Thread starter Bill Cohagan
  • Start date Start date
B

Bill Cohagan

I'm writing a console app in c# and am encountering a strange problem. I'm
trying to use redirection of the standard input stream to read input from a
(xml) file. The following code snippet is from this app:
===============================
static void Main(string[] args)
{
if (args.Length > 0) Console.SetIn(new StreamReader(args[0]));
//executes if I don't use the "<", ">" redirection syntax when invoking

XmlTextReader xmlin = new XmlTextReader(Console.In);
xmlin.WhitespaceHandling = WhitespaceHandling.None;

if (args.Length > 1) Console.SetOut(new
StreamWriter(args[1]));//executes if I don't use the "<", ">" redirection
syntax when invoking

XmlTextWriter xmlw = new XmlTextWriter(Console.Out);
string SchemaResource = "DBDumper.DumpSpec0.xsd";
XmlValidatingReader xmlvr = new XmlValidatingReader(xmlin);
Assembly a = Assembly.GetExecutingAssembly();
Debug.Assert (a.GetManifestResourceInfo(SchemaResource) != null);
XmlTextReader xsdreader = new XmlTextReader(new
StreamReader(a.GetManifestResourceStream(SchemaResource)));
xmlvr.Schemas.Add(null, xsdreader);
try
{
xmlvr.Read();
....
=============================
So, assuming my app's executable is foo.exe, things work fine if I type in

foo input.xml output.xml

Also,
foo input.xml > output.xml

works fine. But, if I type in:

foo < input.xml > output.xml

I get an error on the xmlvr.Read() in the last line above, complaining that
the stream does not support a Write!!

Can anyone give me help on this? I've stared at it now for a while and don't
see the problem.

Thanks in advance,
Bill
 
Hi Bill,

I can not reproduce the problem, here is my code , you may have a try.
Did I misunderstand your meaning?
Can you please post the exactly error messge?

[HeadCount.xml]
<hc:HeadCount xmlns:hc='xsdHeadCount' xsi:schemaLocation='xsdHeadCount
HeadCount.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<Name>Waldo Pepper</Name>
<Name>Red Pepper</Name>
</hc:HeadCount>

[HeadCount.xsd]
<xs:schema xmlns="xsdHeadCount" targetNamespace="xsdHeadCount"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name='HeadCount' type="HEADCOUNT"/>
<xs:complexType name="HEADCOUNT">
<xs:sequence>
<xs:element name='Name' type='xs:string' maxOccurs='unbounded'/>
</xs:sequence>
<xs:attribute name='division' type='xs:int' use='optional' default='8'/>
</xs:complexType>
</xs:schema>

static void Main(string[] args)
{
if (args.Length > 0) Console.SetIn(new StreamReader(args[0]));
//executes if I don't use the "<", ">" redirection syntax when invoking
XmlTextReader xmlin = new XmlTextReader(Console.In);
xmlin.WhitespaceHandling = WhitespaceHandling.None;
if (args.Length > 1) Console.SetOut(new StreamWriter(args[1]));
//executes if I don't use the "<", ">" redirection syntax when invoking
XmlTextWriter xmlw = new XmlTextWriter(Console.Out);
string SchemaResource = @"c:\HeadCount.xsd";
XmlValidatingReader xmlvr = new XmlValidatingReader(xmlin);
XmlTextReader xsdreader = new XmlTextReader(SchemaResource);
xmlvr.Schemas.Add(null, xsdreader);
xmlvr.ValidationType=ValidationType.Schema;
while (!xmlvr.EOF)
xmlvr.Read();
xmlw.WriteStartDocument();
xmlw.WriteStartElement("TestPref","TestName","TestNS");
xmlw.WriteElementString("TestName","TestNS","TestCon");
xmlw.WriteEndElement();
xmlw.WriteEndDocument();
}



Regards,
Peter Huang
Microsoft Online Partner Support
Get Secure! www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

--------------------
From: "Bill Cohagan" <[email protected]>
Subject: Write error on Read() ??
Date: Sat, 27 Sep 2003 16:24:02 -0500
Lines: 50
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <#[email protected]>
Newsgroups: microsoft.public.dotnet.general,microsoft.public.dotnet.languages.csharp
NNTP-Posting-Host: cs24313-53.austin.rr.com 24.243.13.53
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.languages.csharp:187725 microsoft.public.dotnet.general:110132
X-Tomcat-NG: microsoft.public.dotnet.general

I'm writing a console app in c# and am encountering a strange problem. I'm
trying to use redirection of the standard input stream to read input from a
(xml) file. The following code snippet is from this app:
===============================
static void Main(string[] args)
{
if (args.Length > 0) Console.SetIn(new StreamReader(args[0]));
//executes if I don't use the "<", ">" redirection syntax when invoking

XmlTextReader xmlin = new XmlTextReader(Console.In);
xmlin.WhitespaceHandling = WhitespaceHandling.None;

if (args.Length > 1) Console.SetOut(new
StreamWriter(args[1]));//executes if I don't use the "<", ">" redirection
syntax when invoking

XmlTextWriter xmlw = new XmlTextWriter(Console.Out);
string SchemaResource = "DBDumper.DumpSpec0.xsd";
XmlValidatingReader xmlvr = new XmlValidatingReader(xmlin);
Assembly a = Assembly.GetExecutingAssembly();
Debug.Assert (a.GetManifestResourceInfo(SchemaResource) != null);
XmlTextReader xsdreader = new XmlTextReader(new
StreamReader(a.GetManifestResourceStream(SchemaResource)));
xmlvr.Schemas.Add(null, xsdreader);
try
{
xmlvr.Read();
....
=============================
So, assuming my app's executable is foo.exe, things work fine if I type in

foo input.xml output.xml

Also,
foo input.xml > output.xml

works fine. But, if I type in:

foo < input.xml > output.xml

I get an error on the xmlvr.Read() in the last line above, complaining that
the stream does not support a Write!!

Can anyone give me help on this? I've stared at it now for a while and don't
see the problem.

Thanks in advance,
Bill
 
Peter-
Thanks for the response. I'll try your code to see if I can figure out
the difference. In the meantime, did you try this using the redirection
symbols ">" and "<"? That's how I got the error.

Regards,
Bill

Peter Huang said:
Hi Bill,

I can not reproduce the problem, here is my code , you may have a try.
Did I misunderstand your meaning?
Can you please post the exactly error messge?

[HeadCount.xml]
<hc:HeadCount xmlns:hc='xsdHeadCount' xsi:schemaLocation='xsdHeadCount
HeadCount.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<Name>Waldo Pepper</Name>
<Name>Red Pepper</Name>
</hc:HeadCount>

[HeadCount.xsd]
<xs:schema xmlns="xsdHeadCount" targetNamespace="xsdHeadCount"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name='HeadCount' type="HEADCOUNT"/>
<xs:complexType name="HEADCOUNT">
<xs:sequence>
<xs:element name='Name' type='xs:string' maxOccurs='unbounded'/>
</xs:sequence>
<xs:attribute name='division' type='xs:int' use='optional' default='8'/>
</xs:complexType>
</xs:schema>

static void Main(string[] args)
{
if (args.Length > 0) Console.SetIn(new StreamReader(args[0]));
//executes if I don't use the "<", ">" redirection syntax when invoking
XmlTextReader xmlin = new XmlTextReader(Console.In);
xmlin.WhitespaceHandling = WhitespaceHandling.None;
if (args.Length > 1) Console.SetOut(new StreamWriter(args[1]));
//executes if I don't use the "<", ">" redirection syntax when invoking
XmlTextWriter xmlw = new XmlTextWriter(Console.Out);
string SchemaResource = @"c:\HeadCount.xsd";
XmlValidatingReader xmlvr = new XmlValidatingReader(xmlin);
XmlTextReader xsdreader = new XmlTextReader(SchemaResource);
xmlvr.Schemas.Add(null, xsdreader);
xmlvr.ValidationType=ValidationType.Schema;
while (!xmlvr.EOF)
xmlvr.Read();
xmlw.WriteStartDocument();
xmlw.WriteStartElement("TestPref","TestName","TestNS");
xmlw.WriteElementString("TestName","TestNS","TestCon");
xmlw.WriteEndElement();
xmlw.WriteEndDocument();
}



Regards,
Peter Huang
Microsoft Online Partner Support
Get Secure! www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

--------------------
From: "Bill Cohagan" <[email protected]>
Subject: Write error on Read() ??
Date: Sat, 27 Sep 2003 16:24:02 -0500
Lines: 50
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <#[email protected]>
Newsgroups: microsoft.public.dotnet.general,microsoft.public.dotnet.languages.csharp
NNTP-Posting-Host: cs24313-53.austin.rr.com 24.243.13.53
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
Xref: cpmsftngxa06.phx.gbl
microsoft.public.dotnet.languages.csharp:187725
microsoft.public.dotnet.general:110132
X-Tomcat-NG: microsoft.public.dotnet.general

I'm writing a console app in c# and am encountering a strange problem. I'm
trying to use redirection of the standard input stream to read input from a
(xml) file. The following code snippet is from this app:
===============================
static void Main(string[] args)
{
if (args.Length > 0) Console.SetIn(new StreamReader(args[0]));
//executes if I don't use the "<", ">" redirection syntax when invoking

XmlTextReader xmlin = new XmlTextReader(Console.In);
xmlin.WhitespaceHandling = WhitespaceHandling.None;

if (args.Length > 1) Console.SetOut(new
StreamWriter(args[1]));//executes if I don't use the "<", ">" redirection
syntax when invoking

XmlTextWriter xmlw = new XmlTextWriter(Console.Out);
string SchemaResource = "DBDumper.DumpSpec0.xsd";
XmlValidatingReader xmlvr = new XmlValidatingReader(xmlin);
Assembly a = Assembly.GetExecutingAssembly();
Debug.Assert (a.GetManifestResourceInfo(SchemaResource) != null);
XmlTextReader xsdreader = new XmlTextReader(new
StreamReader(a.GetManifestResourceStream(SchemaResource)));
xmlvr.Schemas.Add(null, xsdreader);
try
{
xmlvr.Read();
....
=============================
So, assuming my app's executable is foo.exe, things work fine if I type in

foo input.xml output.xml

Also,
foo input.xml > output.xml

works fine. But, if I type in:

foo < input.xml > output.xml

I get an error on the xmlvr.Read() in the last line above, complaining that
the stream does not support a Write!!

Can anyone give me help on this? I've stared at it now for a while and don't
see the problem.

Thanks in advance,
Bill
 
Peter-
I've figured out the problem. In my case the XML file in question was
written using UTF-8 encoding -- which apparently includes some binary
"chars" at the beginning of the file. If I remove those characters then my
use of Console.In to create an xmltextreader works as expected. So, the
problem was pilot error; although I think the "Write error on Read()" error
was certainly a misleading one!

Thanks again for the response,
Bill

Bill Cohagan said:
Peter-
Thanks for the response. I'll try your code to see if I can figure out
the difference. In the meantime, did you try this using the redirection
symbols ">" and "<"? That's how I got the error.

Regards,
Bill

Peter Huang said:
Hi Bill,

I can not reproduce the problem, here is my code , you may have a try.
Did I misunderstand your meaning?
Can you please post the exactly error messge?

[HeadCount.xml]
<hc:HeadCount xmlns:hc='xsdHeadCount' xsi:schemaLocation='xsdHeadCount
HeadCount.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<Name>Waldo Pepper</Name>
<Name>Red Pepper</Name>
</hc:HeadCount>

[HeadCount.xsd]
<xs:schema xmlns="xsdHeadCount" targetNamespace="xsdHeadCount"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name='HeadCount' type="HEADCOUNT"/>
<xs:complexType name="HEADCOUNT">
<xs:sequence>
<xs:element name='Name' type='xs:string' maxOccurs='unbounded'/>
</xs:sequence>
<xs:attribute name='division' type='xs:int' use='optional' default='8'/>
</xs:complexType>
</xs:schema>

static void Main(string[] args)
{
if (args.Length > 0) Console.SetIn(new StreamReader(args[0]));
//executes if I don't use the "<", ">" redirection syntax when invoking
XmlTextReader xmlin = new XmlTextReader(Console.In);
xmlin.WhitespaceHandling = WhitespaceHandling.None;
if (args.Length > 1) Console.SetOut(new StreamWriter(args[1]));
//executes if I don't use the "<", ">" redirection syntax when invoking
XmlTextWriter xmlw = new XmlTextWriter(Console.Out);
string SchemaResource = @"c:\HeadCount.xsd";
XmlValidatingReader xmlvr = new XmlValidatingReader(xmlin);
XmlTextReader xsdreader = new XmlTextReader(SchemaResource);
xmlvr.Schemas.Add(null, xsdreader);
xmlvr.ValidationType=ValidationType.Schema;
while (!xmlvr.EOF)
xmlvr.Read();
xmlw.WriteStartDocument();
xmlw.WriteStartElement("TestPref","TestName","TestNS");
xmlw.WriteElementString("TestName","TestNS","TestCon");
xmlw.WriteEndElement();
xmlw.WriteEndDocument();
}



Regards,
Peter Huang
Microsoft Online Partner Support
Get Secure! www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

--------------------
From: "Bill Cohagan" <[email protected]>
Subject: Write error on Read() ??
Date: Sat, 27 Sep 2003 16:24:02 -0500
Lines: 50
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <#[email protected]>
Newsgroups: microsoft.public.dotnet.general,microsoft.public.dotnet.languages.csharp
NNTP-Posting-Host: cs24313-53.austin.rr.com 24.243.13.53
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
Xref: cpmsftngxa06.phx.gbl
microsoft.public.dotnet.languages.csharp:187725
microsoft.public.dotnet.general:110132
X-Tomcat-NG: microsoft.public.dotnet.general

I'm writing a console app in c# and am encountering a strange problem. I'm
trying to use redirection of the standard input stream to read input
from
a
(xml) file. The following code snippet is from this app:
===============================
static void Main(string[] args)
{
if (args.Length > 0) Console.SetIn(new StreamReader(args[0]));
//executes if I don't use the "<", ">" redirection syntax when invoking

XmlTextReader xmlin = new XmlTextReader(Console.In);
xmlin.WhitespaceHandling = WhitespaceHandling.None;

if (args.Length > 1) Console.SetOut(new
StreamWriter(args[1]));//executes if I don't use the "<", ">" redirection
syntax when invoking

XmlTextWriter xmlw = new XmlTextWriter(Console.Out);
string SchemaResource = "DBDumper.DumpSpec0.xsd";
XmlValidatingReader xmlvr = new XmlValidatingReader(xmlin);
Assembly a = Assembly.GetExecutingAssembly();
Debug.Assert (a.GetManifestResourceInfo(SchemaResource) != null);
XmlTextReader xsdreader = new XmlTextReader(new
StreamReader(a.GetManifestResourceStream(SchemaResource)));
xmlvr.Schemas.Add(null, xsdreader);
try
{
xmlvr.Read();
....
=============================
So, assuming my app's executable is foo.exe, things work fine if I type in

foo input.xml output.xml

Also,
foo input.xml > output.xml

works fine. But, if I type in:

foo < input.xml > output.xml

I get an error on the xmlvr.Read() in the last line above, complaining that
the stream does not support a Write!!

Can anyone give me help on this? I've stared at it now for a while and don't
see the problem.

Thanks in advance,
Bill
 
Hi Bill,

I have tried to use the redirection symbols ">" and "<" in my demo code.
I am glad that the problem has been resolved.

Regards,
Peter Huang
Microsoft Online Partner Support
Get Secure! www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

--------------------
From: "Bill Cohagan" <[email protected]>
References: <#[email protected]>
Subject: Solved - Re: Write error on Read() ??
Date: Mon, 29 Sep 2003 13:50:14 -0500
Lines: 163
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <[email protected]>
Newsgroups: microsoft.public.dotnet.general
NNTP-Posting-Host: cs24313-53.austin.rr.com 24.243.13.53
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP09.phx.gbl
Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.general:110274
X-Tomcat-NG: microsoft.public.dotnet.general

Peter-
I've figured out the problem. In my case the XML file in question was
written using UTF-8 encoding -- which apparently includes some binary
"chars" at the beginning of the file. If I remove those characters then my
use of Console.In to create an xmltextreader works as expected. So, the
problem was pilot error; although I think the "Write error on Read()" error
was certainly a misleading one!

Thanks again for the response,
Bill

Bill Cohagan said:
Peter-
Thanks for the response. I'll try your code to see if I can figure out
the difference. In the meantime, did you try this using the redirection
symbols ">" and "<"? That's how I got the error.

Regards,
Bill

Peter Huang said:
Hi Bill,

I can not reproduce the problem, here is my code , you may have a try.
Did I misunderstand your meaning?
Can you please post the exactly error messge?

[HeadCount.xml]
<hc:HeadCount xmlns:hc='xsdHeadCount' xsi:schemaLocation='xsdHeadCount
HeadCount.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<Name>Waldo Pepper</Name>
<Name>Red Pepper</Name>
</hc:HeadCount>

[HeadCount.xsd]
<xs:schema xmlns="xsdHeadCount" targetNamespace="xsdHeadCount"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name='HeadCount' type="HEADCOUNT"/>
<xs:complexType name="HEADCOUNT">
<xs:sequence>
<xs:element name='Name' type='xs:string' maxOccurs='unbounded'/>
</xs:sequence>
<xs:attribute name='division' type='xs:int' use='optional' default='8'/>
</xs:complexType>
</xs:schema>

static void Main(string[] args)
{
if (args.Length > 0) Console.SetIn(new StreamReader(args[0]));
//executes if I don't use the "<", ">" redirection syntax when invoking
XmlTextReader xmlin = new XmlTextReader(Console.In);
xmlin.WhitespaceHandling = WhitespaceHandling.None;
if (args.Length > 1) Console.SetOut(new StreamWriter(args[1]));
//executes if I don't use the "<", ">" redirection syntax when invoking
XmlTextWriter xmlw = new XmlTextWriter(Console.Out);
string SchemaResource = @"c:\HeadCount.xsd";
XmlValidatingReader xmlvr = new XmlValidatingReader(xmlin);
XmlTextReader xsdreader = new XmlTextReader(SchemaResource);
xmlvr.Schemas.Add(null, xsdreader);
xmlvr.ValidationType=ValidationType.Schema;
while (!xmlvr.EOF)
xmlvr.Read();
xmlw.WriteStartDocument();
xmlw.WriteStartElement("TestPref","TestName","TestNS");
xmlw.WriteElementString("TestName","TestNS","TestCon");
xmlw.WriteEndElement();
xmlw.WriteEndDocument();
}



Regards,
Peter Huang
Microsoft Online Partner Support
Get Secure! www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.

--------------------
From: "Bill Cohagan" <[email protected]>
Subject: Write error on Read() ??
Date: Sat, 27 Sep 2003 16:24:02 -0500
Lines: 50
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <#[email protected]>
Newsgroups:
microsoft.public.dotnet.general,microsoft.public.dotnet.languages.csharp
NNTP-Posting-Host: cs24313-53.austin.rr.com 24.243.13.53
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.languages.csharp:187725
microsoft.public.dotnet.general:110132
X-Tomcat-NG: microsoft.public.dotnet.general

I'm writing a console app in c# and am encountering a strange problem. I'm
trying to use redirection of the standard input stream to read input
from
a
(xml) file. The following code snippet is from this app:
===============================
static void Main(string[] args)
{
if (args.Length > 0) Console.SetIn(new StreamReader(args[0]));
//executes if I don't use the "<", ">" redirection syntax when invoking

XmlTextReader xmlin = new XmlTextReader(Console.In);
xmlin.WhitespaceHandling = WhitespaceHandling.None;

if (args.Length > 1) Console.SetOut(new
StreamWriter(args[1]));//executes if I don't use the "<", ">" redirection
syntax when invoking

XmlTextWriter xmlw = new XmlTextWriter(Console.Out);
string SchemaResource = "DBDumper.DumpSpec0.xsd";
XmlValidatingReader xmlvr = new XmlValidatingReader(xmlin);
Assembly a = Assembly.GetExecutingAssembly();
Debug.Assert (a.GetManifestResourceInfo(SchemaResource) != null);
XmlTextReader xsdreader = new XmlTextReader(new
StreamReader(a.GetManifestResourceStream(SchemaResource)));
xmlvr.Schemas.Add(null, xsdreader);
try
{
xmlvr.Read();
....
=============================
So, assuming my app's executable is foo.exe, things work fine if I
type
in
foo input.xml output.xml

Also,
foo input.xml > output.xml

works fine. But, if I type in:

foo < input.xml > output.xml

I get an error on the xmlvr.Read() in the last line above, complaining that
the stream does not support a Write!!

Can anyone give me help on this? I've stared at it now for a while and
don't
see the problem.

Thanks in advance,
Bill
 
Back
Top