def test_href(self): # the template. Start at pos 0, some servers complain if # xml tag is not in the first line. envelope_string = ''' <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/" xmlns:types="http://example.com/encodedTypes" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <tns:myResponse xsi:type="tns:myResponse"> <myResult href="#id1" /> </tns:myResponse> <soapenc:Array id="id1" soapenc:arrayType="tns:MyData[2]"> <Item href="#id2" /> <Item href="#id3" /> </soapenc:Array> <tns:MyData id="id2" xsi:type="tns:MyData"> <Machine xsi:type="xsd:string">somemachine</Machine> <UserName xsi:type="xsd:string">someuser</UserName> </tns:MyData> <tns:MyData id="id3" xsi:type="tns:MyData"> <Machine xsi:type="xsd:string">machine2</Machine> <UserName xsi:type="xsd:string">user2</UserName> </tns:MyData> </soap:Body> </soap:Envelope>''' root, xmlids = _parse_xml_string(envelope_string, 'utf8') header, payload = _from_soap(root, xmlids) # quick and dirty test href reconstruction self.assertEquals(len(payload[0]), 2)