FasterXML / FasterXML/jackson-dataformat-xml
`XmlMapper` output not well-formed when Object keys use invalid XML name characters
- 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