[xsd-users] Serializing just the contents of an "any" element
Boris Kolpackov
boris at codesynthesis.com
Mon Jun 19 13:19:30 EDT 2017
Iain Sharp <isharp at atis.org> writes:
> <xs:complexType name="primitiveContent">
> <xs:choice minOccurs="0" maxOccurs="unbounded">
> <xs:any namespace="http://www.onem2m.org/xml/protocols" processContents="lax" />
> <xs:any namespace="##other" processContents="lax" />
> </xs:choice>
> </xs:complexType>
>
> [...]
>
> <m2m: primitiveContent xmlns:m2m="http://www.onem2m.org/xml/protocols">
> <m2m:ae rn="myAE" xmlns:m2m="http://www.onem2m.org/xml/protocols">
> <api>myAE</api>
> <aei>myAE</aei>
> <rr>true</rr>
> </m2m:ae>
> </m2m: primitiveContent >
>
> What I want is:
>
> <m2m:ae rn="myAE" xmlns:m2m="http://www.onem2m.org/xml/protocols">
> <api>myAE</api>
> <aei>myAE</aei>
> <rr>true</rr>
> </m2m:ae>
Your schema allows for multiple elements in the wildcard content. That
is, your could have something like this:
<m2m: primitiveContent xmlns:m2m="http://www.onem2m.org/xml/protocols">
<m2m:ae xmlns:m2m="http://www.onem2m.org/xml/protocols">
...
</m2m:ae>
<m2m:ae xmlns:m2m="http://www.onem2m.org/xml/protocols">
...
</m2m:ae>
<m2m:ae xmlns:m2m="http://www.onem2m.org/xml/protocols">
...
</m2m:ae>
</m2m:primitiveContent >
I am not sure what you want to do with that. Serializing them all will
create a "multi-root" document which is not a valid XML.
In any case, what you need to do is serialize primitiveContent to DOM.
Then you can iterate over its child elements and serialize them one
at a time. Or, alternatively, you could iterate over the wildcard
content and just serialize each element -- will probably be more
efficient. Examples and the FAQ on the Wiki have some sample code
for doing this.
Boris
More information about the xsd-users
mailing list