The XML content could not be parsed

Still need help?

The Atlassian Community is here for you.

Ask the community

Platform Notice: Data Center - This article applies to Atlassian products on the Data Center platform.

Note that this knowledge base article was created for the Data Center version of the product. Data Center knowledge base articles for non-Data Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Problem

After an upgrade some pages may not display correctly, and you will see errors in the atlassian-confluence.log:

ERROR [http-8090-7] [content.render.xhtml.DefaultRenderer] render Error rendering content for view: The XML content could not be parsed. There is a problem at line 55, column 72. Parser message: Unexpected character ' ' (code 32) (missing name?)
 at [row,col {unknown-source}]: [55,72]
 -- url: /pages/viewpage.action | page: 69833540 | userName: craigcm | action: viewpage
com.atlassian.confluence.content.render.xhtml.XhtmlParsingException: The XML content could not be parsed. There is a problem at line 55, column 72. Parser message: Unexpected character ' ' (code 32) (missing name?)
 at [row,col {unknown-source}]: [55,72]
	at com.atlassian.confluence.content.render.xhtml.StaxUtils.convertToXhtmlException(StaxUtils.java:303)
	at com.atlassian.confluence.content.render.xhtml.storage.StorageXhtmlTransformer.transform(StorageXhtmlTransformer.java:49)
	at com.atlassian.confluence.content.render.xhtml.TransformerChain.transform(TransformerChain.java:41)
	at com.atlassian.confluence.content.render.xhtml.PluggableTransformerChain.transform(PluggableTransformerChain.java:53)
	at com.atlassian.confluence.content.render.xhtml.DefaultRenderer.render(DefaultRenderer.java:80)
	at com.atlassian.confluence.content.render.xhtml.DefaultRenderer.render(DefaultRenderer.java:68)
...
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character ' ' (code 32) (missing name?)
 at [row,col {unknown-source}]: [55,72]
	at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:648)
	at com.ctc.wstx.sr.StreamScanner.parseFullName(StreamScanner.java:1859)
	at com.ctc.wstx.sr.StreamScanner.parseEntityName(StreamScanner.java:1985)
	at com.ctc.wstx.sr.StreamScanner.fullyResolveEntity(StreamScanner.java:1496)
	at com.ctc.wstx.sr.BasicStreamReader.readTextSecondary(BasicStreamReader.java:4681)
	at com.ctc.wstx.sr.BasicStreamReader.finishToken(BasicStreamReader.java:3703)
	at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1023)
	at com.ctc.wstx.evt.WstxEventReader.peek(WstxEventReader.java:306)
	at com.ctc.wstx.evt.FilteredEventReader.peek(FilteredEventReader.java:120)
	at com.ctc.wstx.evt.FilteredEventReader.hasNext(FilteredEventReader.java:70)
	at com.atlassian.confluence.content.render.xhtml.XmlFragmentBodyEventReader.hasNext(XmlFragmentBodyEventReader.java:38)
	at com.atlassian.confluence.content.render.xhtml.ForwardingXmlEventReader.hasNext(ForwardingXmlEventReader.java:26)
	at com.atlassian.confluence.content.render.xhtml.transformers.DefaultFragmentTransformer.transform(DefaultFragmentTransformer.java:88)
	at com.atlassian.confluence.content.render.xhtml.storage.StorageXhtmlTransformer.transform(StorageXhtmlTransformer.java:43)
	... 230 more

Diagnosis

This can happen if an upgrade task failed. There is a task that adds a column 'bodytypeid' to the 'bodycontent' table, and then sets the value for all wiki markup pages to 0. Another upgrade task then determines those that are still at 0, and attempts to migrate them to XHTML - the new storage format. If this value is null, the above error will occur.

To determine if this is the problem in your case, run this query against your database:

select * from BODYCONTENT
 WHERE 
  contentid IN (
    SELECT c.contentid FROM CONTENT AS c WHERE CONTENTTYPE IN ('PAGE','COMMENT','BLOGPOST')
  ) AND
  bodytypeid IS NULL;

If this returns any values, follow the steps below to resolve the issue.

Resolution

  • Stop Confluence
  • Execute this statement against the database, to set the value to 0, for all unmigrated content where the value is null


    UPDATE 
      BODYCONTENT 
    SET 
      bodytypeid = 0 
    WHERE 
      contentid IN (
        SELECT c.contentid FROM CONTENT AS c WHERE CONTENTTYPE IN ('PAGE','COMMENT','BLOGPOST')
      ) AND
      bodytypeid IS NULL;
  • Restart Confluence, and the upgrade tasks should run and migrate your data across to the new storage format (XHTML).
  • To re-run the migration manually after the restart, follow the instructions here.
Last modified on Jan 3, 2025

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.