Skip to content

gml: decode object properties mapped to XML element chains#587

Merged
cportele merged 2 commits into
masterfrom
gml-object-chains
Jul 27, 2026
Merged

gml: decode object properties mapped to XML element chains#587
cportele merged 2 commits into
masterfrom
gml-object-chains

Conversation

@cportele

Copy link
Copy Markdown
Contributor

Follow-up to #586.

An xmlPaths chain may map an object property: the innermost element of the chain takes the role of the object element, and the elements inside it are the object's members, resolved against the property's schema including the members' own chains. For an object array, a leading '*' marks the segment from which the chain repeats per member; the decoder anchors the ARRAY bracket at the element whose children match that segment, so all members land in one ARRAY pair while the elements before it are consumed once.

  • XmlPathSegment keeps the repetition marker instead of dropping it.
  • continueStructuralChain opens the ARRAY at the marker segment and keeps it open across member repetitions; an innermost segment that resolves to an object emits the OBJECT pair and pushes an object element frame that carries the property's segment, since no object property element encloses it on the wire, so its own end closes the OBJECT pair.

An xmlPaths chain may map an object property: the innermost element of the
chain takes the role of the object element, and the elements inside it are
the object's members, resolved against the property's schema including the
members' own chains. For an object array, a leading '*' marks the segment
from which the chain repeats per member; the decoder anchors the ARRAY
bracket at the element whose children match that segment, so all members
land in one ARRAY pair while the elements before it are consumed once.

- XmlPathSegment keeps the repetition marker instead of dropping it.
- continueStructuralChain opens the ARRAY at the marker segment and keeps
  it open across member repetitions; an innermost segment that resolves to
  an object emits the OBJECT pair and pushes an object element frame that
  carries the property's segment, since no object property element encloses
  it on the wire, so its own end closes the OBJECT pair.
@cportele
cportele requested a review from azahnen as a code owner July 27, 2026 09:53
@cportele
cportele merged commit 6ff5d1f into master Jul 27, 2026
3 checks passed
@cportele
cportele deleted the gml-object-chains branch July 27, 2026 09:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant