Skip to content

Commit 1c4d79e

Browse files
authored
Merge pull request #189 from goetas-webservices/any-element
Hanlde any type element introduced in recent xsd reader
2 parents b4c2e53 + 95967a4 commit 1c4d79e

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/Php/PhpConverter.php

+10-6
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Exception;
66
use GoetasWebservices\XML\XSDReader\Schema\Attribute\AttributeItem;
7+
use GoetasWebservices\XML\XSDReader\Schema\Element\ElementContainer;
78
use GoetasWebservices\XML\XSDReader\Schema\Attribute\Group as AttributeGroup;
89
use GoetasWebservices\XML\XSDReader\Schema\Element\Element;
910
use GoetasWebservices\XML\XSDReader\Schema\Element\ElementDef;
@@ -130,7 +131,7 @@ private function visitTypeBase(PHPClass $class, Type $type): void
130131
*/
131132
private function visitSequence(PHPClass $class, Schema $schema, Sequence $sequence): void
132133
{
133-
foreach ($sequence->getElements() as $childSequence) {
134+
foreach ($this->filterElements($sequence) as $childSequence) {
134135
if ($childSequence instanceof Group) {
135136
$this->visitGroup($class, $schema, $childSequence);
136137
} elseif ($childSequence instanceof Choice) {
@@ -142,6 +143,11 @@ private function visitSequence(PHPClass $class, Schema $schema, Sequence $sequen
142143
}
143144
}
144145

146+
private function filterElements(ElementContainer $container): array
147+
{
148+
return array_filter($container->getElements(), fn ($e) => !$e instanceof Any);
149+
}
150+
145151
/**
146152
* Process xsd:complexType xsd:choice xsd:element
147153
*
@@ -151,7 +157,7 @@ private function visitSequence(PHPClass $class, Schema $schema, Sequence $sequen
151157
*/
152158
private function visitChoice(PHPClass $class, Schema $schema, Choice $choice): void
153159
{
154-
foreach ($choice->getElements() as $choiceOption) {
160+
foreach ($this->filterElements($choice) as $choiceOption) {
155161
if ($choiceOption instanceof Sequence) {
156162
$this->visitSequence($class, $schema, $choiceOption);
157163
} else {
@@ -163,7 +169,7 @@ private function visitChoice(PHPClass $class, Schema $schema, Choice $choice): v
163169

164170
private function visitGroup(PHPClass $class, Schema $schema, Group $group): void
165171
{
166-
foreach ($group->getElements() as $childGroup) {
172+
foreach ($this->filterElements($group) as $childGroup) {
167173
if ($childGroup instanceof Group) {
168174
$this->visitGroup($class, $schema, $childGroup);
169175
} else {
@@ -346,15 +352,13 @@ private function visitTypeAnonymous(Type $type, $name, PHPClass $parentClass)
346352
private function visitComplexType(PHPClass $class, ComplexType $type): void
347353
{
348354
$schema = $type->getSchema();
349-
foreach ($type->getElements() as $element) {
355+
foreach ($this->filterElements($type) as $element) {
350356
if ($element instanceof Sequence) {
351357
$this->visitSequence($class, $schema, $element);
352358
} elseif ($element instanceof Choice) {
353359
$this->visitChoice($class, $schema, $element);
354360
} elseif ($element instanceof Group) {
355361
$this->visitGroup($class, $schema, $element);
356-
} elseif ($element instanceof Any) {
357-
continue;
358362
} else {
359363
$property = $this->visitElement($class, $schema, $element);
360364
$class->addProperty($property);

0 commit comments

Comments
 (0)