Hi
It looks like you'd like to optimize (remove possibly redundant
prefixes) as opposed to change the namespaces, the transformation
feature does not do it, perhaps you can use XSLT feature to drop
namespaces prefixes
Cheers, Sergey
On 12/01/16 16:34, [email protected] wrote:
Hi,
i use CXF 3.14
i would like to remove some namespaces for some elements and preserve
other..
the original XML is like that :
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<wsse:Security
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
soap:mustUnderstand="1">
<wsse:UsernameToken
wsu:Id="UsernameToken-371dcf1d-2ef6-4e29-8b96-eedd053fdf69">
<wsse:Username>MYUSER</wsse:Username>
<wsse:Password
Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">QTh0CuaMLVIUpyLCM8vvobZZg28=</wsse:Password>
<wsse:Nonce
EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">B2BolkOOPUgz4uXRDQJlJA==</wsse:Nonce>
<wsu:Created>2016-01-12T15:58:31.142Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
<Action
xmlns="http://www.w3.org/2005/08/addressing">http://webservices.afterbit.com/HSFREQ_07_3_1A</Action>
<MessageID
xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:59eeb370-c04c-4457-bd77-b67784c37eab</MessageID>
<To
xmlns="http://www.w3.org/2005/08/addressing">https://test.webservices.afterbit.com/MYUSER</To>
<ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
<Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
</ReplyTo>
<ns6:AMA_SecurityHostedUser
xmlns:ns6="http://xml.afterbit.com/2010/06/Security_v1"
xmlns:ns70="http://xml.afterbit.com/HSFREQ_07_3_1A"
xmlns:ns71="http://xml.afterbit.com/HSFRES_07_3_1A" >
<ns6:UserID AgentDutyCode="SS" POS_Type="0"
PseudoCityCode="AAABBB" RequestorType="X"/>
</ns6:AMA_SecurityHostedUser>
</soap:Header>
<soap:Body>
<ns70:Command_Cryptic
xmlns:ns6="http://xml.afterbit.com/2010/06/Security_v1"
xmlns:ns70="http://xml.afterbit.com/HSFREQ_07_3_1A"
xmlns:ns71="http://xml.afterbit.com/HSFRES_07_3_1A" >
<ns70:longTextString>
<ns70:textStringDetails>Hi</ns70:textStringDetails>
</ns70:longTextString>
</ns70:Command_Cryptic>
</soap:Body>
</soap:Envelope>
and this is what i would want :
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<wsse:Security
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
soap:mustUnderstand="1">
<wsse:UsernameToken
wsu:Id="UsernameToken-371dcf1d-2ef6-4e29-8b96-eedd053fdf69">
<wsse:Username>MYUSER</wsse:Username>
<wsse:Password
Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">QTh0CuaMLVIUpyLCM8vvobZZg28=</wsse:Password>
<wsse:Nonce
EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">B2BolkOOPUgz4uXRDQJlJA==</wsse:Nonce>
<wsu:Created>2016-01-12T15:58:31.142Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
<Action
xmlns="http://www.w3.org/2005/08/addressing">http://webservices.afterbit.com/HSFREQ_07_3_1A</Action>
<MessageID
xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:59eeb370-c04c-4457-bd77-b67784c37eab</MessageID>
<To
xmlns="http://www.w3.org/2005/08/addressing">https://test.webservices.afterbit.com/MYUSER</To>
<ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
<Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
</ReplyTo>
<ns6:AMA_SecurityHostedUser
xmlns:ns6="http://xml.afterbit.com/2010/06/Security_v1">
<ns6:UserID AgentDutyCode="SS" POS_Type="0"
PseudoCityCode="AAABBB" RequestorType="X"/>
</ns6:AMA_SecurityHostedUser>
</soap:Header>
<soap:Body>
<ns70:Command_Cryptic>
<ns70:longTextString>
<ns70:textStringDetails>Hi</ns70:textStringDetails>
</ns70:longTextString>
</ns70:Command_Cryptic>
</soap:Body>
</soap:Envelope>
that is :
1) <ns6:AMA_SecurityHostedUser
xmlns:ns6="http://xml.afterbit.com/2010/06/Security_v1"
xmlns:ns70="http://xml.afterbit.com/HSFREQ_07_3_1A"
xmlns:ns71="http://xml.afterbit.com/HSFRES_07_3_1A" >
becomes :
<ns6:AMA_SecurityHostedUser
xmlns:ns6="http://xml.afterbit.com/2010/06/Security_v1" >
2) <ns70:Command_Cryptic
xmlns:ns6="http://xml.afterbit.com/2010/06/Security_v1"
xmlns:ns70="http://xml.afterbit.com/HSFREQ_07_3_1A"
xmlns:ns71="http://xml.afterbit.com/HSFRES_07_3_1A" >
becomes :
<ns70:Command_Cryptic >
this is my java unsuccessful code :
Map<String, String> outTransformMap = new HashMap<String, String>();
outTransformMap.put("{http://xml.afterbit.com/HSFREQ_07_3_1A}*", "*");
outTransformMap.put("{http://xml.afterbit.com/HSFRES_07_3_1A}*", "*");
outTransformMap.put("{http://xml.afterbit.com/2010/06/Security_v1}*", "*");
outTransformMap.put("AMA_SecurityHostedUser",
"{http://xml.afterbit.com/2010/06/Security_v1}AMA_SecurityHostedUser");
org.apache.cxf.interceptor.transform.TransformOutInterceptor
transformOutInterceptor = new
org.apache.cxf.interceptor.transform.TransformOutInterceptor();
transformOutInterceptor.setOutTransformElements(outTransformMap);
client.getOutInterceptors().add(transformOutInterceptor);
Thanks!
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/