@@ -226,6 +226,19 @@ class All(OrderIndicator):
226
226
"""
227
227
228
228
def parse_xmlelements (self , xmlelements , schema , name = None , context = None ):
229
+ """Consume matching xmlelements
230
+
231
+ :param xmlelements: Dequeue of XML element objects
232
+ :type xmlelements: collections.deque of lxml.etree._Element
233
+ :param schema: The parent XML schema
234
+ :type schema: zeep.xsd.Schema
235
+ :param name: The name of the parent element
236
+ :type name: str
237
+ :param context: Optional parsing context (for inline schemas)
238
+ :type context: zeep.xsd.context.XmlParserContext
239
+ :rtype: dict or None
240
+
241
+ """
229
242
result = OrderedDict ()
230
243
expected_tags = {element .qname for __ , element in self .elements }
231
244
consumed_tags = set ()
@@ -261,7 +274,19 @@ def default_value(self):
261
274
return OrderedDict ()
262
275
263
276
def parse_xmlelements (self , xmlelements , schema , name = None , context = None ):
264
- """Return a dictionary"""
277
+ """Consume matching xmlelements
278
+
279
+ :param xmlelements: Dequeue of XML element objects
280
+ :type xmlelements: collections.deque of lxml.etree._Element
281
+ :param schema: The parent XML schema
282
+ :type schema: zeep.xsd.Schema
283
+ :param name: The name of the parent element
284
+ :type name: str
285
+ :param context: Optional parsing context (for inline schemas)
286
+ :type context: zeep.xsd.context.XmlParserContext
287
+ :rtype: dict or None
288
+
289
+ """
265
290
result = []
266
291
267
292
for _unused in max_occurs_iter (self .max_occurs ):
@@ -319,7 +344,7 @@ def parse_kwargs(self, kwargs, name, available_kwargs):
319
344
This handles two distinct initialization methods:
320
345
321
346
1. Passing the choice elements directly to the kwargs (unnested)
322
- 2. Passing the choice elements into the `name` kwarg (_alue_1 ) (nested).
347
+ 2. Passing the choice elements into the `name` kwarg (_value_1 ) (nested).
323
348
This case is required when multiple choice elements are given.
324
349
325
350
:param name: Name of the choice element (_value_1)
@@ -369,9 +394,9 @@ def parse_kwargs(self, kwargs, name, available_kwargs):
369
394
370
395
# When choice elements are specified directly in the kwargs
371
396
found = False
372
- for i , choice in enumerate ( self ) :
397
+ for name , choice in self . elements_nested :
373
398
temp_kwargs = copy .copy (available_kwargs )
374
- subresult = choice .parse_kwargs (kwargs , None , temp_kwargs )
399
+ subresult = choice .parse_kwargs (kwargs , name , temp_kwargs )
375
400
376
401
if subresult :
377
402
if not any (subresult .values ()):
@@ -416,8 +441,12 @@ def accept(self, values):
416
441
nums = set ()
417
442
for name , element in self .elements_nested :
418
443
if isinstance (element , Element ):
419
- if name in values and values [name ]:
420
- nums .add (1 )
444
+ if self .accepts_multiple :
445
+ if all (name in item and item [name ] for item in values ):
446
+ nums .add (1 )
447
+ else :
448
+ if name in values and values [name ]:
449
+ nums .add (1 )
421
450
else :
422
451
num = element .accept (values )
423
452
nums .add (num )
@@ -473,7 +502,8 @@ class Sequence(OrderIndicator):
473
502
474
503
"""
475
504
def parse_xmlelements (self , xmlelements , schema , name = None , context = None ):
476
- """
505
+ """Consume matching xmlelements
506
+
477
507
:param xmlelements: Dequeue of XML element objects
478
508
:type xmlelements: collections.deque of lxml.etree._Element
479
509
:param schema: The parent XML schema
@@ -482,7 +512,7 @@ def parse_xmlelements(self, xmlelements, schema, name=None, context=None):
482
512
:type name: str
483
513
:param context: Optional parsing context (for inline schemas)
484
514
:type context: zeep.xsd.context.XmlParserContext
485
- :return : dict or None
515
+ :rtype : dict or None
486
516
487
517
"""
488
518
result = []
@@ -585,6 +615,19 @@ def parse_kwargs(self, kwargs, name, available_kwargs):
585
615
return result
586
616
587
617
def parse_xmlelements (self , xmlelements , schema , name = None , context = None ):
618
+ """Consume matching xmlelements
619
+
620
+ :param xmlelements: Dequeue of XML element objects
621
+ :type xmlelements: collections.deque of lxml.etree._Element
622
+ :param schema: The parent XML schema
623
+ :type schema: zeep.xsd.Schema
624
+ :param name: The name of the parent element
625
+ :type name: str
626
+ :param context: Optional parsing context (for inline schemas)
627
+ :type context: zeep.xsd.context.XmlParserContext
628
+ :rtype: dict or None
629
+
630
+ """
588
631
result = []
589
632
590
633
for _unused in max_occurs_iter (self .max_occurs ):
0 commit comments