Part of my WSDL is defined as
<s:complexType name="AbstractOperation" abstract="true">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="progressive" type="s:int" />
</s:sequence>
</s:complexType>
<s:complexType name="ConcreteOperation1">
<s:complexContent mixed="false">
<s:extension base="tns:AbstractOperation">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="identifier" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
<s:complexType name="ConcreteOperation2">
<s:complexContent mixed="false">
<s:extension base="tns:AbstractOperation">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="code" type="s:string" />
</s:sequence>
</s:extension>
</s:complexContent>
</s:complexType>
I want to return something like:
<tns:Operations>
<tns:AbstractOperation xsi:type="tns:ConcreteOperation1">
<tns:progressive>1</tns:progressive>
<tns:identifier>FP301DW</tns:identifier>
</tns:AbstractOperation>
<tns:AbstractOperation xsi:type="tns:ConcreteOperation2">
<tns:progressive>2</tns:progressive>
<tns:code>AF2F3S</tns:code>
</tns:AbstractOperation>
</tns:Operations>
In my NestJS project, I am using the soap library to start a SOAP server. In the controller, after retrieving data from a Prisma ORM instance, I am returning it like this:
return {
Operations: {
AbstractOperation: prismaMappedOperationArray,
},
}
But I get:
<tns:Operations>
<tns:AbstractOperation>
<tns:progressive>1</tns:progressive>
<tns:identifier>FP301DW</tns:identifier>
</tns:AbstractOperation>
<tns:AbstractOperation>
<tns:progressive>2</tns:progressive>
<tns:code>AF2F3S</tns:code>
</tns:AbstractOperation>
</tns:Operations>
How can I dynamically specify the xsi:type attribute when arranging the response, based on the instance of the prismaMappedOperationArray objects (which can be of either the ConcreteOperation1 or ConcreteOperation2 class)?