FasterXML / FasterXML/jackson-dataformat-xml

Hard coding for Indexed type item/wrapper name removes all possiblity of customization

Offen
#356 7 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Java
Sterne
631
Forks
246
Ø Merge
7 T. 9 Std.
Gemergte PRs (30 T.)
13

Beschreibung

https://github.com/FasterXML/jackson-dataformat-xml/blob/6bd59fb77aa27bfba8d51eb36a346d218f201142/src/main/java/com/fasterxml/jackson/dataformat/xml/ser/XmlSerializerProvider.java#L146

In following function
```java
protected void _startRootArray(ToXmlGenerator xgen, QName rootName) throws IOException
{
xgen.writeStartObject();
// Could repeat root name, but what's the point? How to customize?
xgen.writeFieldName("item");
}
```

Although `rootName` has been passed it is not being used. This makes it impossible to change array type wrapper name. If someone needs `item` as their wrapper they can set `@JacksonXmlRootElement(localName="item")` but otherwise is not possible.

Alternatively we can have another attribute in annotation like `@JacksonXmlRootElement(localName="some_node", wrapperForIndexedType="some_node")`
having interface declaration of _JacksonXmlRootElement.java_ as
```java
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface JacksonXmlRootElement
{
String namespace() default "";
String localName() default "";
String wrapperForIndexedType() default "item";
}
```

___
Problem:
Trying to generate output like
```xml


p1
p2


p1
p2

```

getting:
```xml


p1
p2


p1
p2

```
However if hard-coding is removed it would be easier to generate json and xml from a same function and entity definition with some varied level of alteration at XML layer. This avoids re-declaring everything to get two different representation of output i.e. json and xml.

For example in my case I have to port an old API which has response format for json:
```json
[
{"p1": "p1", "p2": "p2"},
{"p1": "p1", "p2": "p2"}
]
```
for xml:
```xml


p1
p2


p1
p2

```
but I cannot achieve the xml format without rewriting all POJOs.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

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