By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,201 Members | 1,617 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,201 IT Pros & Developers. It's quick & easy.

VC++ .NET 2003: XmlTextReader Class Generates A Runtime Exception

P: n/a
SHC
Hi all,
I did the "Build" on the attached code in my VC++ .NET 2003 - Windows XP Pro
PC. On the c:\ screen, I got the following: Microsoft Development Environment
An unhandled exception of type 'System.Xml.XmlException' occured
in system.xml.dll
Addtional Information: System error
|Break| |Continue|
I clicked on the |Continue| and I got the following:
"c:\Documents and Settings\Scott H. Chang\My Documents\Visual Studio
Projects\Q815658XMLRead.........
unhandled Excetion: System.Xml.XmlException:
The XML declaration is unexpected.
Line 1, position 4
at System.Xml.XmlTextReader.ParseTag<>
at System.Xml.XmlTextReader.ParseRoot<>
at System.Xml.XmlTextReaderRead<>
at main (Int32argc, SByte ** argv) in
c:\documents and
settings\.....\.....\q815658xmlread\q815658xml.cpp :line 17
The Line 17 in my .cpp program is "while (read->Read())".
I saw
(1) The Microsoft KB Article ID: 818777
FIX: The XmlTextReader class generates a runtime exception when you read an
XML document
View products that this article applies to.
Article ID : 818777
Last Review : April 27, 2004
Revision : 1.0
On this page
SYMPTOMS
CAUSE
RESOLUTION
WORKAROUND
STATUS
REFERENCES
APPLIES TO

SYMPTOMS
When you use the XmlTextReader class to read an XML document, you may
receive the following runtime exception error message:
Value must be positive. Parameter name: startIndex
at System.Text.StringBuilder.Append(Char[] value, Int32 startIndex, Int32
charCount)
at System.Xml.XmlTextReader.ParseXmlDecl()
at System.Xml.XmlTextReader.ParseTag()
at System.Xml.XmlTextReader.ParseRoot()
at System.Xml.XmlTextReader.Read()
Back to the top

CAUSE
This problem occurs if there is a delay when the XmlTextReader class reads
an XML document from a Stream object.
Back to the top

RESOLUTION
A supported hotfix is now available from Microsoft, but it is only intended
to correct the problem that is described in this article. Only apply it to
systems that are experiencing this specific problem. This hotfix may receive
additional testing. Therefore, if you are not severely affected by this
problem, Microsoft recommends that you wait for the next Microsoft .NET
Framework 1.1 service pack that contains this hotfix.
(2) Microsoft .NET Framework 1.1 Service Pack1 (File Name:
NDP11.1sd1-KB867460-x86.exe Version 1.0 that was published 8/30/2004) said
that the primary focus of Microsoft .NET Framework 1.1 Service Pack 1 (SP1)
is improved security.

I am completely lost in this matter. Please hehp and advise me
how I can correct the problem and make the project working for me.

Thanks in advance,
SHC

P. S. I itried to abort my "Build" process after 'Debug' and 'Break'. I
clicked on the
"Build" menu, I just saw 'Configuration Managert' only and I do not
know how
to abort this process now. Please advise on this matter also.

/////////---Q815658XMLread.cpp----////////////
// This is the main project file for VC++ application project
// generated using an Application Wizard.

#include "stdafx.h"
#include <tchar.h>

#using <mscorlib.dll>
#using <system.xml.dll>

using namespace System;
using namespace System::Xml;

int _tmain(int argc, char* argv[])
{
XmlTextReader* reader = new XmlTextReader ("books.xml");

while (reader->Read())
{
switch (reader->NodeType)
{
case XmlNodeType::Element: // The node is an element.
Console::Write("<{0}", reader->Name);

while (reader->MoveToNextAttribute()) // Read the attributes.
Console::Write(" {0}='{1}'", reader->Name, reader->Value);
Console::WriteLine(">");
break;
case XmlNodeType::Text: //Display the text in each element.
Console::WriteLine (reader->Value);
break;
case XmlNodeType::EndElement: //Display the end of the element.
Console::Write("</{0}", reader->Name);
Console::WriteLine(">");
break;
}
}
Console::ReadLine();
}


SHC
Nov 12 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
Hi,

The said XmlException is thrown when the xml declaration (ie. <?xml ... ?>)
is not at the very beginning of the xml document. Move the xml declaration
at the beginning of the xml document (no preceding whitespace) and the
project should start working for you.

Ion

"SHC" <SH*@discussions.microsoft.com> wrote in message
news:14**********************************@microsof t.com...
Hi all,
I did the "Build" on the attached code in my VC++ .NET 2003 - Windows XP Pro PC. On the c:\ screen, I got the following: Microsoft Development Environment An unhandled exception of type 'System.Xml.XmlException' occured in system.xml.dll
Addtional Information: System error
|Break| |Continue|
I clicked on the |Continue| and I got the following:
"c:\Documents and Settings\Scott H. Chang\My Documents\Visual Studio
Projects\Q815658XMLRead.........
unhandled Excetion: System.Xml.XmlException:
The XML declaration is unexpected.
Line 1, position 4
at System.Xml.XmlTextReader.ParseTag<>
at System.Xml.XmlTextReader.ParseRoot<>
at System.Xml.XmlTextReaderRead<>
at main (Int32argc, SByte ** argv) in
c:\documents and
settings\.....\.....\q815658xmlread\q815658xml.cpp :line 17
The Line 17 in my .cpp program is "while (read->Read())".
I saw
(1) The Microsoft KB Article ID: 818777
FIX: The XmlTextReader class generates a runtime exception when you read an XML document
View products that this article applies to.
Article ID : 818777
Last Review : April 27, 2004
Revision : 1.0
On this page
SYMPTOMS
CAUSE
RESOLUTION
WORKAROUND
STATUS
REFERENCES
APPLIES TO

SYMPTOMS
When you use the XmlTextReader class to read an XML document, you may
receive the following runtime exception error message:
Value must be positive. Parameter name: startIndex
at System.Text.StringBuilder.Append(Char[] value, Int32 startIndex, Int32
charCount)
at System.Xml.XmlTextReader.ParseXmlDecl()
at System.Xml.XmlTextReader.ParseTag()
at System.Xml.XmlTextReader.ParseRoot()
at System.Xml.XmlTextReader.Read()
Back to the top

CAUSE
This problem occurs if there is a delay when the XmlTextReader class reads
an XML document from a Stream object.
Back to the top

RESOLUTION
A supported hotfix is now available from Microsoft, but it is only intended to correct the problem that is described in this article. Only apply it to
systems that are experiencing this specific problem. This hotfix may receive additional testing. Therefore, if you are not severely affected by this
problem, Microsoft recommends that you wait for the next Microsoft .NET
Framework 1.1 service pack that contains this hotfix.
(2) Microsoft .NET Framework 1.1 Service Pack1 (File Name:
NDP11.1sd1-KB867460-x86.exe Version 1.0 that was published 8/30/2004) said
that the primary focus of Microsoft .NET Framework 1.1 Service Pack 1 (SP1) is improved security.

I am completely lost in this matter. Please hehp and advise me
how I can correct the problem and make the project working for me.

Thanks in advance,
SHC

P. S. I itried to abort my "Build" process after 'Debug' and 'Break'. I
clicked on the
"Build" menu, I just saw 'Configuration Managert' only and I do not know how
to abort this process now. Please advise on this matter also.

/////////---Q815658XMLread.cpp----////////////
// This is the main project file for VC++ application project
// generated using an Application Wizard.

#include "stdafx.h"
#include <tchar.h>

#using <mscorlib.dll>
#using <system.xml.dll>

using namespace System;
using namespace System::Xml;

int _tmain(int argc, char* argv[])
{
XmlTextReader* reader = new XmlTextReader ("books.xml");

while (reader->Read())
{
switch (reader->NodeType)
{
case XmlNodeType::Element: // The node is an element.
Console::Write("<{0}", reader->Name);

while (reader->MoveToNextAttribute()) // Read the attributes. Console::Write(" {0}='{1}'", reader->Name, reader->Value);
Console::WriteLine(">");
break;
case XmlNodeType::Text: //Display the text in each element.
Console::WriteLine (reader->Value);
break;
case XmlNodeType::EndElement: //Display the end of the element.
Console::Write("</{0}", reader->Name);
Console::WriteLine(">");
break;
}
}
Console::ReadLine();
}


SHC

Nov 12 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.