|
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