Yup. In Perl, you can use --verbose on the command line of any script and it will spit out out the raw XML. I'm not sure if Python has a debug option that is similar or not. You could use that to capture some your SOAP "templates" and just do the appropriate search and replace where necessary. Example:
REQUEST: $VAR1 = '<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ReconfigVM_Task xmlns="urn:vim25"><_this type="VirtualMachine">vm-100</_this>
<spec><deviceChange><operation>edit</operation><device xsi:type="VirtualDisk"><key>2000</key><deviceInfo><label>Hard disk 1</label><summary>524,288 KB</summary></deviceInfo><backing xsi:type="VirtualDiskFlatVer2BackingInfo"><fileName>[GlobalDS_0] DC0_C0_RP6_VM7/DC0_C0_RP6_VM7.vmdk</fileName><datastore type="Datastore">datastore-30</datastore>
<diskMode>persistent</diskMode><split>0</split><writeThrough>0</writeThrough><thinProvisioned>0</thinProvisioned><uuid>520ee694-2b4b-6f6e-9c13-f89af8ac8554</uuid></backing><controllerKey>1000</controllerKey><unitNumber>0</unitNumber><capacityInKB>524288</capacityInKB><shares><shares>3670072</shares><level>low</level></shares><storageIOAllocation><limit>10</limit></storageIOAllocation></device></deviceChange></spec></ReconfigVM_Task></soapenv:Body></soapenv:Envelope>
';
RESPONSE: $VAR1 = '<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ReconfigVM_TaskResponse xmlns="urn:vim25"><returnval type="Task">task-1223</returnval></ReconfigVM_TaskResponse>
</soapenv:Body>
</soapenv:Envelope>';
It's a bit painful when you start dealing with objects from several sources and building envelopes by hand can get brutal when you move into nested objects in the XML. But if you got a small set of operations and objects to deal with, should work with some regex. There are a few other places it may get tricky, for example, sometimes you have inherited objects of a specific type and they get serialized by specifying the type depending on the object. In that case you'll need to preserve the type and value when passing those objects around.
An example is the VirtualDevice here:
<device xsi:type="VirtualDisk">...</device>
In this case it's a VirtualDisk, but it could also be a VirtualEthernetCard (VirtualE1000 is a child of VirtualEthernetCard), VirtualFloppy, VirtualCdrom, etc.
If you have a Python adapter, then look at PyVmomi. It will probably save you a lot of pain and misery long term Project Onyx used to support SOAP outputs as well, but not sure if that project is maintained, supported or even updated for later API versions.