XML Parsing Error: Junk After Document Element

Discussion in 'XML' started by pbd22, Sep 8, 2006.

  1. pbd22

    pbd22 Guest

    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!
     
    pbd22, Sep 8, 2006
    #1
    1. Advertising

  2. 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.
     
    Joseph Kesselman, Sep 8, 2006
    #2
    1. Advertising

  3. pbd22

    pbd22 Guest

    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)
     
    pbd22, Sep 8, 2006
    #3
  4. pbd22

    Andy Dingley Guest

    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.
     
    Andy Dingley, Sep 8, 2006
    #4
  5. pbd22

    pbd22 Guest

    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.
     
    pbd22, Sep 9, 2006
    #5
  6. pbd22

    pbd22 Guest

    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.
     
    pbd22, Sep 9, 2006
    #6
  7. pbd22

    Peter Flynn Guest

    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). 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!
    >
     
    Peter Flynn, Sep 9, 2006
    #7
  8. pbd22

    pbd22 Guest

    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). 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!
    > >
     
    pbd22, Sep 9, 2006
    #8
  9. pbd22

    pbd22 Guest

    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.
     
    pbd22, Sep 9, 2006
    #9
  10. pbd22

    Peter Flynn Guest

    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
     
    Peter Flynn, Sep 10, 2006
    #10
  11. pbd22

    pbd22 Guest

    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
     
    pbd22, Sep 10, 2006
    #11
  12. pbd22

    Peter Flynn Guest

    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
     
    Peter Flynn, Sep 10, 2006
    #12
  13. pbd22

    pbd22 Guest

    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
     
    pbd22, Sep 10, 2006
    #13
  14. pbd22

    pbd22 Guest

    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
     
    pbd22, Sep 10, 2006
    #14
  15. pbd22

    pbd22 Guest

    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
     
    pbd22, Sep 11, 2006
    #15
  16. pbd22

    Andy Dingley Guest

    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)
     
    Andy Dingley, Sep 11, 2006
    #16
  17. pbd22

    pbd22 Guest

    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)
     
    pbd22, Sep 11, 2006
    #17
  18. pbd22

    pbd22 Guest

    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)
     
    pbd22, Sep 11, 2006
    #18
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Tony Prichard
    Replies:
    0
    Views:
    789
    Tony Prichard
    Dec 12, 2003
  2. Dave19

    Junk after document element

    Dave19, Feb 8, 2006, in forum: XML
    Replies:
    0
    Views:
    2,849
    Dave19
    Feb 8, 2006
  3. pbd22
    Replies:
    2
    Views:
    1,755
    pbd22
    Mar 13, 2007
  4. Le
    Replies:
    0
    Views:
    1,067
  5. John Ramsden
    Replies:
    6
    Views:
    247
    John Ramsden
    Sep 12, 2003
Loading...

Share This Page