FasterXML / FasterXML/jackson-dataformat-xml

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

Open
#356 7 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
631
Forks
246
Avg merge
7d 9h
Merged PRs (30d)
13

Description

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.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.