Thanks for your feedback. Since xml attributes do not have a correspondance in
json, I would expect that there are conventions on how to handle these.For
example, when experimenting with mapped JSON, the generated soap message is
properly populated with attributes from the json string when using the "@"
prefix (this is using libraries from jettison). Unfortunately I do not know the
convention for xml attributes when using the XML Stream API with moshi, nor
whether this is supported at all.
Am Dienstag, 18. Februar 2025 um 17:19:01 MEZ hat Jeff Greif
<[email protected]> Folgendes geschrieben:
Disclaimer: I don't have experience using Axis facilities for JSON.
There isn't a distinction between attributes and elements in JSON.
Essentially, every field is an attribute, but attributes may have complex
content. So probably the JSON message should not use the '@' character to
distinguish an attribute. Also, since order of fields is not significant in
JSON, XML schema concepts like <sequence> or "maxOccurs" may have no fully
corresponding JSON equivalent.
On Tue, Feb 18, 2025 at 7:40 AM robertlazarski <[email protected]> wrote:
Could you please paste or attach your logs? That may help me understand the
problem better. I don't have use cases combining XML and JSON in my own
projects but I know the code pretty well and I can probably help.
On Mon, Feb 17, 2025 at 5:23 AM Stefan Traud <[email protected]> wrote:
Hi RobertUsing contract first with ADB, I continue to check feasibility to
amend our existing service with JSON support (based on XML Stream API with
moshi).
I'm currently struggling with xml types that include attributes. To reproduce
the issue I have amended the wsdl in the samples.quickstartadb to include an
attribute in the getPrice element:
<xs:element name="getPrice">
<xs:complexType>
<xs:sequence>
<xs:element name="symbol" nillable="true"
type="xs:string" />
</xs:sequence>
<xs:attribute name="currency" type="xs:string"
use="required"/>
</xs:complexType>
</xs:element>
My corresponding JSON message should then be something like:
{ "getPrice" : {"@currency": "USD", "symbol": "IBM" }}
However the parse method in the GetPrice ADBBean keeps complaining "Required
attribute currency is missing"; specifically this call returns null:
reader.getAttributeValue("http://quickstart.samples/xsd", "currency");
(However it works when using SOAP).
Do I need to define attributes differently in the JSON message?