|
11 | 11 | use GoetasWebservices\XML\XSDReader\Schema\Element\ElementRef; |
12 | 12 | use GoetasWebservices\XML\XSDReader\Schema\Element\ElementSingle; |
13 | 13 | use GoetasWebservices\XML\XSDReader\Schema\Element\Group; |
| 14 | +use GoetasWebservices\XML\XSDReader\Schema\Element\Choice; |
14 | 15 | use GoetasWebservices\XML\XSDReader\Schema\Item; |
15 | 16 | use GoetasWebservices\XML\XSDReader\Schema\Schema; |
16 | 17 | use GoetasWebservices\XML\XSDReader\Schema\Type\BaseComplexType; |
@@ -118,6 +119,21 @@ private function visitTypeBase(PHPClass $class, Type $type) |
118 | 119 | } |
119 | 120 | } |
120 | 121 |
|
| 122 | + /** |
| 123 | + * Process xsd:complexType xsd:choice xsd:element |
| 124 | + * |
| 125 | + * @param PHPClass $class |
| 126 | + * @param Schema $schema |
| 127 | + * @param Choice $choice |
| 128 | + */ |
| 129 | + private function visitChoice(PHPClass $class, Schema $schema, Choice $choice) |
| 130 | + { |
| 131 | + foreach ($choice->getElements() as $choiceOption) { |
| 132 | + $property = $this->visitElement($class, $schema, $choiceOption); |
| 133 | + $class->addProperty($property); |
| 134 | + } |
| 135 | + } |
| 136 | + |
121 | 137 | private function visitGroup(PHPClass $class, Schema $schema, Group $group) |
122 | 138 | { |
123 | 139 | foreach ($group->getElements() as $childGroup) { |
@@ -304,7 +320,9 @@ private function visitComplexType(PHPClass $class, ComplexType $type) |
304 | 320 | { |
305 | 321 | $schema = $type->getSchema(); |
306 | 322 | foreach ($type->getElements() as $element) { |
307 | | - if ($element instanceof Group) { |
| 323 | + if ($element instanceof Choice) { |
| 324 | + $this->visitChoice($class, $schema, $element); |
| 325 | + } elseif ($element instanceof Group) { |
308 | 326 | $this->visitGroup($class, $schema, $element); |
309 | 327 | } else { |
310 | 328 | $property = $this->visitElement($class, $schema, $element); |
|
0 commit comments