- 
          
 - 
                Notifications
    
You must be signed in to change notification settings  - Fork 233
 
Description
Line 146 in 6bd59fb
| xgen.writeFieldName("item"); | 
In following function
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
@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
<ElementList>
  <Element>
    <p1>p1</p1>
    <p2>p2</p2>
  </Element>
  <Element>
    <p1>p1</p1>
    <p2>p2</p2>
  </Element>
</ElementList>getting:
<ElementList>
  <item>
    <p1>p1</p1>
    <p2>p2</p2>
  </item>
  <item>
    <p1>p1</p1>
    <p2>p2</p2>
  </item>
</ElementList>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:
[ 
  {"p1": "p1", "p2": "p2"},
  {"p1": "p1", "p2": "p2"}
]for xml:
<ElementList>
  <Element>
    <p1>p1</p1>
    <p2>p2</p2>
  </Element>
  <Element>
    <p1>p1</p1>
    <p2>p2</p2>
  </Element>
</ElementList>but I cannot achieve the xml format without rewriting all POJOs.