FasterXML / FasterXML/jackson-dataformat-xml

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

Offen
#511 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
test-needed
Vorherrschende Sprache
Java
Sterne
631
Forks
246
Ø Merge
7 T. 9 Std.
Gemergte PRs (30 T.)
13

Beschreibung

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](https://github.com/FasterXML/jackson-dataformat-xml/files/7856593/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:
`12315`

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?

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne damit, die Konvertierung mit XmlMapper und dem verlinkten Open Food Facts JSON oder BadXmlFromJson.zip zu reproduzieren. Vergleiche das generierte XML mit dem Parsing durch Xerces oder Saxon und untersuche anschließend die verfügbaren Optionen von FromXmlParser.Feature und ToXmlGenerator.Feature. Als abgeschlossen gilt die Aufgabe, wenn die Ausgabe für Schlüssel wie agribalyse_proxy_food_code:en und 1 wohlgeformt ist und Namespace-Präfixe korrekt verarbeitet werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
backend
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.