Thanks for the quick reply Sergey!

I'm having a bit a trouble with the suggested solution though, almost
certainly a pilot error on my part I assume.

XML before:
<Container xmlns="http://something";>
    <Parent>
        <Child1>Some Value</Child1>
        <Child2>Another Value</Child2>
    </Parent>
</Container>

So I tried:
transformOutInterceptor.setOutDropElements(Collections.singletonList("{
http://something}Child1";));

Which results in:
<Container xmlns="http://something";>
    <Parent>
        Some Value
        <Child2>Another Value</Child2>
    </Parent>
</Container>

Got rid of the element...but not the value. So I tried the "deep-drop"
described on that link:
transformOutInterceptor.setOutTransformElements(Collections.singletonMap("{
http://something}Child1";, ""));

Which resulted in:
<Container xmlns="http://something";>
    <Parent/>
</Container>

What am I screwing up? I basically just want to end up with:
<Container xmlns="http://something";>
    <Parent>
        <Child2>Another Value</Child2>
        <Child1>Some Value</Child1>
    </Parent>
          </Container>

Many Thanks!
Greg


On Fri, May 24, 2013 at 3:36 AM, Sergey Beryozkin <[email protected]>wrote:

> Hi
>
> On 23/05/13 22:02, Greg Barker wrote:
>
>> Hello -
>>
>> I'm using the Apache CXF WebClient for a project, and the REST API I am
>> interacting with has a requirement that XML elements are sent in a
>> specific
>> order, and "correct" order can change depending on certain settings that
>> are not known at compile time.
>>
>> I've found that the XmlType.propOrder annotation allows me to specify the
>> order in which I want the XML elements to appear at compile time. This
>> works great. The problem is that I need to be able to change this order at
>> runtime, and I cannot figure out a way to do that without resorting to
>> ugly/hacky solutions that modify the annotation at runtime.
>>
>> Is there an easy way to specify XML element order dynamically at runtime?
>>
>>  Try Transformation feature:
>
> http://cxf.apache.org/docs/**transformationfeature.html<http://cxf.apache.org/docs/transformationfeature.html>
>
> Use outDropElements and outAppendElements properties.
>
> Suppose you have the following produced by default:
> <request>
>   <a/>
>   <b/>
> </request>
>
> if needed, you can get <a/> dropped with outDropElements and then added
> immediately after <b/> with outAppendElements.
>
> If that has to be set up dynamically then add the feature or its
> interceptors from the code, similarly to
> http://cxf.apache.org/docs/**transformationfeature.html#**
> TransformationFeature-**Configuringthefeaturefromtheco**de<http://cxf.apache.org/docs/transformationfeature.html#TransformationFeature-Configuringthefeaturefromthecode>
>
> HTH, Sergey
>
>  Thanks!
>> Greg
>>
>>
>

Reply via email to