Skip to content

XmlMapper output not well-formed when Object keys use invalid XML name characters #511

Open
@rlbns

Description

@rlbns

I've been working with a lot of web APIs and converting the JSON to XML using XmlMapper. It generally works great, but I have an example that creates invalid XML. I am using the latest version of Jackson (2.13.1).

When you call this API you get the attached JSON output.
https://world.openfoodfacts.org/api/v0/product/7622300315733.json

The Jackson pretty-printer has no problem indenting this nicely.
BadXmlFromJson.zip

After converting it to XML (also in the attached ZIP) you get some issues that prevent Xerces or Saxon from parsing it:

  1. Namespace prefixes are not declared
  2. Some elements are not well formed

For example, at line 48 you see this:
<agribalyse_proxy_food_code:en>12315</agribalyse_proxy_food_code:en>

and at line 653 you see this: <1> which is an error because XML names must start with a letter or underscore.

I'm using XmlMapper like this:

		XmlMapper xmlMapper = new XmlMapper();
		return xmlMapper.writeValueAsString(jsonTree);

I can't find any features in FromXmlParser.Feature or ToXmlGenerator.Feature that apply to either of these issues.

Is there another way to configure XmlMapper or is this a bug?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions