`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

Dieses Issue hat noch niemand übernommen.

Bewertung

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

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.

Beschreibung

test-needed

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?

Vorherrschende Sprache
Java
Sterne
636
Forks
250
Ø Merge
7 Std. 10 Min.
Gemergte PRs (30 T.)
8

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus FasterXML/jackson-dataformat-xml

Alle Issues in FasterXML/jackson-dataformat-xml

Ähnliche Issues

Weitere Issues zu Java

Neue Issues direkt in Ihr Postfach

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