4
4
5
5
use Exception ;
6
6
use GoetasWebservices \XML \XSDReader \Schema \Attribute \AttributeItem ;
7
+ use GoetasWebservices \XML \XSDReader \Schema \Element \ElementContainer ;
7
8
use GoetasWebservices \XML \XSDReader \Schema \Attribute \Group as AttributeGroup ;
8
9
use GoetasWebservices \XML \XSDReader \Schema \Element \Element ;
9
10
use GoetasWebservices \XML \XSDReader \Schema \Element \ElementDef ;
@@ -130,7 +131,7 @@ private function visitTypeBase(PHPClass $class, Type $type): void
130
131
*/
131
132
private function visitSequence (PHPClass $ class , Schema $ schema , Sequence $ sequence ): void
132
133
{
133
- foreach ($ sequence -> getElements ( ) as $ childSequence ) {
134
+ foreach ($ this -> filterElements ( $ sequence ) as $ childSequence ) {
134
135
if ($ childSequence instanceof Group) {
135
136
$ this ->visitGroup ($ class , $ schema , $ childSequence );
136
137
} elseif ($ childSequence instanceof Choice) {
@@ -142,6 +143,11 @@ private function visitSequence(PHPClass $class, Schema $schema, Sequence $sequen
142
143
}
143
144
}
144
145
146
+ private function filterElements (ElementContainer $ container ): array
147
+ {
148
+ return array_filter ($ container ->getElements (), fn ($ e ) => !$ e instanceof Any);
149
+ }
150
+
145
151
/**
146
152
* Process xsd:complexType xsd:choice xsd:element
147
153
*
@@ -151,7 +157,7 @@ private function visitSequence(PHPClass $class, Schema $schema, Sequence $sequen
151
157
*/
152
158
private function visitChoice (PHPClass $ class , Schema $ schema , Choice $ choice ): void
153
159
{
154
- foreach ($ choice -> getElements ( ) as $ choiceOption ) {
160
+ foreach ($ this -> filterElements ( $ choice ) as $ choiceOption ) {
155
161
if ($ choiceOption instanceof Sequence) {
156
162
$ this ->visitSequence ($ class , $ schema , $ choiceOption );
157
163
} else {
@@ -163,7 +169,7 @@ private function visitChoice(PHPClass $class, Schema $schema, Choice $choice): v
163
169
164
170
private function visitGroup (PHPClass $ class , Schema $ schema , Group $ group ): void
165
171
{
166
- foreach ($ group -> getElements ( ) as $ childGroup ) {
172
+ foreach ($ this -> filterElements ( $ group ) as $ childGroup ) {
167
173
if ($ childGroup instanceof Group) {
168
174
$ this ->visitGroup ($ class , $ schema , $ childGroup );
169
175
} else {
@@ -346,15 +352,13 @@ private function visitTypeAnonymous(Type $type, $name, PHPClass $parentClass)
346
352
private function visitComplexType (PHPClass $ class , ComplexType $ type ): void
347
353
{
348
354
$ schema = $ type ->getSchema ();
349
- foreach ($ type -> getElements ( ) as $ element ) {
355
+ foreach ($ this -> filterElements ( $ type ) as $ element ) {
350
356
if ($ element instanceof Sequence) {
351
357
$ this ->visitSequence ($ class , $ schema , $ element );
352
358
} elseif ($ element instanceof Choice) {
353
359
$ this ->visitChoice ($ class , $ schema , $ element );
354
360
} elseif ($ element instanceof Group) {
355
361
$ this ->visitGroup ($ class , $ schema , $ element );
356
- } elseif ($ element instanceof Any) {
357
- continue ;
358
362
} else {
359
363
$ property = $ this ->visitElement ($ class , $ schema , $ element );
360
364
$ class ->addProperty ($ property );
0 commit comments