Right, the transform feature is not meant to replace XSLT, it would be
much faster for straightforward transforms at the element
structure/namespace level but it's not a good fit for the complex
transformations...
Note if all of these arbitrary simple elements are united by a namespace
which does not qualify complex ones as well, then you may still be able
to use the transform one, check the tests, there some examples how to
use the wildcards
Sergey
On 29/11/17 13:32, Marcel Stör wrote:
I think either of us doesn't understand ;-)
Since the service provider essentially replaced the SOAP string type
with its own 'StringType' simple type that "VEMPTY" text content can
appear in any element. Hence, I need to globally replace that text in
every SOAP message - regardless of which XML element it is used with.
That's why I concluded that I can't use the standard TransformationFeature.
I was also checking whether CXF allowed to register custom
deserializers/mapper for a given type (i.e. from that custom XML
StringType to Java String) but I haven't found anything yet.
On 29.11.17 14:22, Sergey Beryozkin wrote:
You should be able to replace it:
https://github.com/apache/cxf/blob/master/core/src/test/java/org/apache/cxf/staxutils/transform/InTransformReaderTest.java#L56
and
https://github.com/apache/cxf/blob/master/core/src/test/java/org/apache/cxf/staxutils/transform/InTransformReaderTest.java#L73
You'd likely need to say that {someNs}modifiedBy has to be replaced by
{someNs}modifiedBy
HTH, Sergey
On 29/11/17 09:22, Marcel Stör wrote:
We're consuming SOAP messages for which the string type was extended or
redefined (see at the bottom). To denote null/empty values the XML
element uses "VEMPTY" as text content.
Example: <ns2:modifiedBy>VEMPTY</ns2:modifiedBy>
Before the message is deserialized and mapped to the Java model we'd
like to transform "VEMPTY" to "". As this special text content can
appear in arbitrary elements I don't think the standard
TransformationFeature as per
https://cxf.apache.org/docs/transformationfeature.html#TransformationFeature-Replacingtextcontent
is applicable. Correct?
I suspect we need to use the XSLT transformation, right?
[StringType]
<xsd:simpleType name="StringType">
<xsd:annotation>
<xsd:documentation xml:lang="en">
...some documentation...
VEMPTY if effective value is null
...some more documentation...
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:element name="modifiedBy" type="st:StringType">
<xsd:annotation>
<xsd:documentation>
....
</xsd:documentation>
</xsd:annotation>
</xsd:element>