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

XML Parsing Error: Junk After Document Element

P: n/a
hi.

i keep getting this error.

as i understand it, my xml isn't formatted correctly.
the online errata suggests the standard formatting
to solve this problem:

element
(tab) (tab) element
(tab) (tab) (tab) element /element
(tab) (tab) (tab) element /element
(tab) (tab) /element
/element

i attempted to acheive this by using the below line (the xml is coming
from the server):

stringbuilder.Append(Microsoft.VisualBasic.vbTab)

but, I still get the error.

I have also tried an xml style sheet with style="padding-left:n"
and this doesnt work.

i keep getting that darn error.

when i alert the XML returned from the server, i get all
elements on the left-most position. no formatting. despite the
two solutions above.

i am guessing this comes up a lot. what am i doing wrong?

thanks!

Sep 8 '06 #1
Share this Question
Share on Google+
17 Replies


P: n/a
A well-formed XML document must have one, and only one, top-level
element. Anything after that element's end-tag will be ignored at best,
and possibly reported as an error such as the one you're getting here.

Fix your file/stream/whatever.
Sep 8 '06 #2

P: n/a
Hi.

Thanks.

I was hopeful after your comment, and deleted my top-level tag,
"users", leaving
just "user" as the top tag. I am still getting that error, tho. My
string builder on
the server is as follows (i have tried this with the style sheet
commented out also) ... maybe you can see something that i am missing?

Dim sbHtml As New System.Text.StringBuilder

sbHtml.Append("<?xml version='1.0' standalone='yes'?>")
sbHtml.Append(Environment.NewLine)
sbHtml.Append("<?xml-stylesheet type='text/css'
href='../styles/xml.css'?>")
sbHtml.Append(Environment.NewLine)

For i As Integer = 0 To counter - 1
sbHtml.Append(vbTab)
sbHtml.Append("<user id='")
sbHtml.Append(i)
sbHtml.Append("' siteId='")
sbHtml.Append(siteid(i))
sbHtml.Append("'>")
sbHtml.Append(Environment.NewLine)
sbHtml.Append(vbTab)
sbHtml.Append(vbTab)
sbHtml.Append("<photolocation>")
sbHtml.Append("../uploads/")
sbHtml.Append(uname(i))
sbHtml.Append("/thumbnails/")
sbHtml.Append(pname(i))
sbHtml.Append("</photolocation>")
sbHtml.Append(Environment.NewLine)
sbHtml.Append(vbTab)
sbHtml.Append(vbTab)
sbHtml.Append("<headline>")
sbHtml.Append(headline(i))
sbHtml.Append("</headline>")
sbHtml.Append(Environment.NewLine)
sbHtml.Append(vbTab)
sbHtml.Append(vbTab)
sbHtml.Append("<age>")
sbHtml.Append(CurrentAge(year(i), month(i), day(i)))
sbHtml.Append("</age>")
sbHtml.Append(Environment.NewLine)
sbHtml.Append(vbTab)
sbHtml.Append(vbTab)
sbHtml.Append("<lastactive>")
If LastActive(dlogin(i)) <= 1 Then
sbHtml.Append("24 hours")
End If
If LastActive(dlogin(i)) 1 and LastActive(dlogin(i)) <= 7
Then
sbHtml.Append(LastActive(dlogin(i)))
sbHtml.Append(" days")
End If
If LastActive(dlogin(i)) >= 7 and LastActive(dlogin(i)) <=
14 Then
sbHtml.Append("week")
End If
If LastActive(dlogin(i)) 14 and LastActive(dlogin(i)) <=
31 Then
sbHtml.Append("month")
End If
sbHtml.Append("</lastactive>")
sbHtml.Append(Environment.NewLine)
sbHtml.Append(vbTab)
sbHtml.Append(vbTab)
sbHtml.Append("<aboutme>")
sbHtml.Append(aboutme(i))
sbHtml.Append(" ...")
sbHtml.Append("</aboutme>")
sbHtml.Append(Environment.NewLine)
sbHtml.Append(vbTab)
sbHtml.Append("</user>")
sbHtml.Append(Environment.NewLine)
Next

Context.Response.ContentType="text/xml"
Context.Response.Write(sbHtml.ToString)

Sep 8 '06 #3

P: n/a

pbd22 wrote:
>My string builder
Don't use string, use a DOM. MSXML is the obvious candidate, and the
helpfiles are quite good for it.

Sep 8 '06 #4

P: n/a
hi, thanks.

i have done some reading about MSXML and have even downloaded the
parser.
i am still unclear on one item. the XML document i am working with does
not (nor
do i want it to) exist as a file. this is an ajax call and the
stringbuilder i constructed was creating the document out of data
pulled from the database. the ajax call then grabs the XML text from
the server and writes it to a hidden DIV at the bottom of the form.

i am not sure how you see MSXML as a solution to my problem. does it
pre-format the
document prior to delivery to the client? I'd appreciate you thinking
behind this recommendation.

thanks again.

Andy Dingley wrote:
pbd22 wrote:
My string builder

Don't use string, use a DOM. MSXML is the obvious candidate, and the
helpfiles are quite good for it.
Sep 9 '06 #5

P: n/a

OK. this is solved with XmlTextWriter.
thanks for your help.

pbd22 wrote:
hi, thanks.

i have done some reading about MSXML and have even downloaded the
parser.
i am still unclear on one item. the XML document i am working with does
not (nor
do i want it to) exist as a file. this is an ajax call and the
stringbuilder i constructed was creating the document out of data
pulled from the database. the ajax call then grabs the XML text from
the server and writes it to a hidden DIV at the bottom of the form.

i am not sure how you see MSXML as a solution to my problem. does it
pre-format the
document prior to delivery to the client? I'd appreciate you thinking
behind this recommendation.

thanks again.

Andy Dingley wrote:
pbd22 wrote:
>My string builder
Don't use string, use a DOM. MSXML is the obvious candidate, and the
helpfiles are quite good for it.
Sep 9 '06 #6

P: n/a
pbd22 wrote:
hi.

i keep getting this error.

as i understand it, my xml isn't formatted correctly.
It's nothing to do with formatting. It's the structure of your document.

Append adds data below the end of a file: this is an error in XML, where
data must be *inserted* (using the correct element type[s]). At the end
of the file, once the end-tag has occurred, no further elements are
permitted.

///Peter
--
XML FAQ: http://xml.silmaril.ie/

the online errata suggests the standard formatting
to solve this problem:

element
(tab) (tab) element
(tab) (tab) (tab) element /element
(tab) (tab) (tab) element /element
(tab) (tab) /element
/element

i attempted to acheive this by using the below line (the xml is coming
from the server):

stringbuilder.Append(Microsoft.VisualBasic.vbTab)

but, I still get the error.

I have also tried an xml style sheet with style="padding-left:n"
and this doesnt work.

i keep getting that darn error.

when i alert the XML returned from the server, i get all
elements on the left-most position. no formatting. despite the
two solutions above.

i am guessing this comes up a lot. what am i doing wrong?

thanks!
Sep 9 '06 #7

P: n/a
Hi Peter,

thanks. I have tried my string builder using the Insert statement
but am still getting the same error. What about my current code
is incorrect? it doesn't sound like it matters if i am using
stringbuilder
or xmltextwriter, and i have changed all the appends to inserts. what
am i missing?

thank you.

Dim sbhtml As New System.Text.StringBuilder

sbhtml.Insert(sbhtml.Length, "<?xml version='1.0'
standalone='yes'?>")
//NOTE: I have also tried surrounded the below with <usrers>
</users>

For i As Integer = 0 To counter - 1
sbhtml.Insert(sbhtml.Length, "<user id='")
sbhtml.Insert(sbhtml.Length, i)
sbhtml.Insert(sbhtml.Length, "' siteid='")
sbhtml.Insert(sbhtml.Length, siteid(i))
sbhtml.Insert(sbhtml.Length, "'>")
sbhtml.Insert(sbhtml.Length, "<photolocation>")
sbhtml.Insert(sbhtml.Length, "../uploads/")
sbhtml.Insert(sbhtml.Length, uname(i))
sbhtml.Insert(sbhtml.Length, "/thumbnails/")
sbhtml.Insert(sbhtml.Length, pname(i))
sbhtml.Insert(sbhtml.Length, "</photolocation>")
sbhtml.Insert(sbhtml.Length, "<headline>")
sbhtml.Insert(sbhtml.Length, headline(i))
sbhtml.Insert(sbhtml.Length, "</headline>")
sbhtml.Insert(sbhtml.Length, "<age>")
sbhtml.Insert(sbhtml.Length, CurrentAge(year(i), month(i),
day(i)))
sbhtml.Insert(sbhtml.Length, "</age>")
sbhtml.Insert(sbhtml.Length, "<lastactive>")
If LastActive(dlogin(i)) <= 1 Then
sbhtml.Insert(sbhtml.Length, "24 hours")
End If
If LastActive(dlogin(i)) 1 And LastActive(dlogin(i)) <= 7
Then
sbhtml.Insert(sbhtml.Length, LastActive(dlogin(i)))
sbhtml.Insert(sbhtml.Length, " days")
End If
If LastActive(dlogin(i)) >= 7 And LastActive(dlogin(i)) <=
14 Then
sbhtml.Insert(sbhtml.Length, "week")
End If
If LastActive(dlogin(i)) 14 And LastActive(dlogin(i)) <=
31 Then
sbhtml.Insert(sbhtml.Length, "month")
End If
sbhtml.Insert(sbhtml.Length, "</lastactive>")
sbhtml.Insert(sbhtml.Length, "<aboutme>")
sbhtml.Insert(sbhtml.Length, aboutme(i))
sbhtml.Insert(sbhtml.Length, " ...")
sbhtml.Insert(sbhtml.Length, "</aboutme>")
sbhtml.Insert(sbhtml.Length, "</user>")
Next

Context.Response.ContentType = "text/xml"

//NOTE: I have tried both of the following:
Context.Response.Write(sbhtml.Insert(sbhtml.Length ,
sbhtml.ToString))
Context.Response.Write(sbhtml.ToString))

Peter Flynn wrote:
pbd22 wrote:
hi.

i keep getting this error.

as i understand it, my xml isn't formatted correctly.

It's nothing to do with formatting. It's the structure of your document.

Append adds data below the end of a file: this is an error in XML, where
data must be *inserted* (using the correct element type[s]). At the end
of the file, once the end-tag has occurred, no further elements are
permitted.

///Peter
--
XML FAQ: http://xml.silmaril.ie/

the online errata suggests the standard formatting
to solve this problem:

element
(tab) (tab) element
(tab) (tab) (tab) element /element
(tab) (tab) (tab) element /element
(tab) (tab) /element
/element

i attempted to acheive this by using the below line (the xml is coming
from the server):

stringbuilder.Append(Microsoft.VisualBasic.vbTab)

but, I still get the error.

I have also tried an xml style sheet with style="padding-left:n"
and this doesnt work.

i keep getting that darn error.

when i alert the XML returned from the server, i get all
elements on the left-most position. no formatting. despite the
two solutions above.

i am guessing this comes up a lot. what am i doing wrong?

thanks!
Sep 9 '06 #8

P: n/a
i believe that i am getting this error
because i am sending the results to a DIV
inside my HTML? this is not a stand-alone
xml file.

alas, i am still unsure as the error persists.

Sep 9 '06 #9

P: n/a
pbd22 wrote:
Hi Peter,

thanks. I have tried my string builder using the Insert statement
but am still getting the same error. What about my current code
is incorrect? it doesn't sound like it matters if i am using
stringbuilder
or xmltextwriter, and i have changed all the appends to inserts. what
am i missing?
I'll leave the answer to a VB expert.
You may have better luck posting this in a Microsoft newsgroup
if you're stuck using VB.

///Peter
Sep 9 '06 #10

P: n/a
hi.

so, the changes i made to my code,
adding inserts and taking out the appends,
was that the solution that you were suggesting?
i was a little bit unclear, should the changes
i made have worked based on your advice?

thanks.

Peter Flynn wrote:
pbd22 wrote:
Hi Peter,

thanks. I have tried my string builder using the Insert statement
but am still getting the same error. What about my current code
is incorrect? it doesn't sound like it matters if i am using
stringbuilder
or xmltextwriter, and i have changed all the appends to inserts. what
am i missing?

I'll leave the answer to a VB expert.
You may have better luck posting this in a Microsoft newsgroup
if you're stuck using VB.

///Peter
Sep 9 '06 #11

P: n/a
pbd22 wrote:
hi.

so, the changes i made to my code,
adding inserts and taking out the appends,
was that the solution that you were suggesting?
i was a little bit unclear, should the changes
i made have worked based on your advice?
All I said was that you can't add stuff past the end of an XML document.
It wasn't clear from your original post that you were using append to
*create* the whole document: I thought you were just trying to add stuff
to an existing document. Sorry for the misunderstanding.

///Peter

Sep 10 '06 #12

P: n/a
I don't think this is a VB issue, but an XML problem.

pbd22 wrote:
hi.

so, the changes i made to my code,
adding inserts and taking out the appends,
was that the solution that you were suggesting?
i was a little bit unclear, should the changes
i made have worked based on your advice?

thanks.

Peter Flynn wrote:
pbd22 wrote:
Hi Peter,
>
thanks. I have tried my string builder using the Insert statement
but am still getting the same error. What about my current code
is incorrect? it doesn't sound like it matters if i am using
stringbuilder
or xmltextwriter, and i have changed all the appends to inserts. what
am i missing?
I'll leave the answer to a VB expert.
You may have better luck posting this in a Microsoft newsgroup
if you're stuck using VB.

///Peter
Sep 10 '06 #13

P: n/a

oh. ok. i see. no, i am programatically creating the XML
from database values, then writing the results via AJAX
to a DIV on my form. It lives there while the user's session
lasts. the XML is never in a "file" per se.

so, i guess i am back to the drawing board.

thanks for trying.

Peter Flynn wrote:
pbd22 wrote:
hi.

so, the changes i made to my code,
adding inserts and taking out the appends,
was that the solution that you were suggesting?
i was a little bit unclear, should the changes
i made have worked based on your advice?

All I said was that you can't add stuff past the end of an XML document.
It wasn't clear from your original post that you were using append to
*create* the whole document: I thought you were just trying to add stuff
to an existing document. Sorry for the misunderstanding.

///Peter
Sep 10 '06 #14

P: n/a
hi. a bit of an update:

i am getting a sense that my error is sum'd up as follows:

i am sending my xml via stringbuilder from the server like this:

<header>
<body>
<a>
<b>blah</b>
<c>blah</c>
</a>
</body>
</header>

but, it is turning up on the client like this:

&lt;header&gt;
&lt;body&gt;
&lt;a&gt;&lt;b&gt;blah&lt;/b&gt;&lt;c&gt;blah&lt;/c&gt;&lt;/a&gt;
&lt;/body&gt;
&lt;/header&gt;

the "<" and the ">" are getting changed into &lt; and &gt;

how do i fix this?
pbd22 wrote:
I don't think this is a VB issue, but an XML problem.

pbd22 wrote:
hi.

so, the changes i made to my code,
adding inserts and taking out the appends,
was that the solution that you were suggesting?
i was a little bit unclear, should the changes
i made have worked based on your advice?

thanks.

Peter Flynn wrote:
pbd22 wrote:
Hi Peter,

thanks. I have tried my string builder using the Insert statement
but am still getting the same error. What about my current code
is incorrect? it doesn't sound like it matters if i am using
stringbuilder
or xmltextwriter, and i have changed all the appends to inserts. what
am i missing?
>
I'll leave the answer to a VB expert.
You may have better luck posting this in a Microsoft newsgroup
if you're stuck using VB.
>
///Peter
Sep 11 '06 #15

P: n/a
pbd22 wrote:
the "<" and the ">" are getting changed into &lt; and &gt;

how do i fix this?
Two possible ways:

* Use DOM, not a string tool.

* Learn at least as much about how to work with XML as native strings
as someone who writes DOMs.

(Guess what, the first of these is easier and more reliable)

Sep 11 '06 #16

P: n/a
hi.

i am new to this and i am trying. As for DOM, I have tried the below:

I am using stringbuilder to build the database values into an
XML doc.
then, to create the DOM, I do the following:
Dim xml As XmlDocument = New XmlDocument
xml.LoadXml(sbhtml.ToString)

Context.Response.ContentType = "text/xml"
Context.Response.Write(xml)

This returns nothing on the client. I keep getting "undefined". I
appreciate your DOM suggestion, and am learning as i go, but maybe you
could help to provide a solution?

thanks again.

Andy Dingley wrote:
pbd22 wrote:
the "<" and the ">" are getting changed into &lt; and &gt;

how do i fix this?

Two possible ways:

* Use DOM, not a string tool.

* Learn at least as much about how to work with XML as native strings
as someone who writes DOMs.

(Guess what, the first of these is easier and more reliable)
Sep 11 '06 #17

P: n/a
ok, i figured this out.

for others, maybe this will help:

i am working in .NET

I created a search_data.aspx file for the AJAX call.
in the search_data.aspx file, i had the:

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">

tags wrapping my script. hence, autogenerated HTML
was added after my XML stuff, causing the Junk after XML error.

take out the content tags and you should be good to go.

thanks all for your suggestions along the way.
pbd22 wrote:
hi.

i am new to this and i am trying. As for DOM, I have tried the below:

I am using stringbuilder to build the database values into an
XML doc.
then, to create the DOM, I do the following:
Dim xml As XmlDocument = New XmlDocument
xml.LoadXml(sbhtml.ToString)

Context.Response.ContentType = "text/xml"
Context.Response.Write(xml)

This returns nothing on the client. I keep getting "undefined". I
appreciate your DOM suggestion, and am learning as i go, but maybe you
could help to provide a solution?

thanks again.

Andy Dingley wrote:
pbd22 wrote:
the "<" and the ">" are getting changed into &lt; and &gt;
>
how do i fix this?
Two possible ways:

* Use DOM, not a string tool.

* Learn at least as much about how to work with XML as native strings
as someone who writes DOMs.

(Guess what, the first of these is easier and more reliable)
Sep 11 '06 #18

This discussion thread is closed

Replies have been disabled for this discussion.