سؤال

ما هي أفضل طريقة للتمثيل في مساحة الاسم "اختيار" "اختيار"؟ بمعنى آخر.

<xs:complexType name="MyType">
  <xs:sequence>
    <!-- common elements here -->
    <xs:element type="xs:string" name="name" ... />
  </xs:sequence>
  <xs:choice>
    <xs:element name="stringValue" type="xs:string"></xs:element>
    <xs:element name="intValue" type="xs:int"></xs:element>
  </xs:choice>
</xs:complexType>

كيف يمكنني طراز هذا في جافا؟ كنت أفكر في شيء مثل:

public class MyType
  String name;

  String stringValue;
  int intValue;
...

ولكن هذا ليس من المؤكد أن ليس أفضل طريقة، أو أنا مخطئ؟ بالإضافة إلى ذلك، إذا أردت عرض الخدمات مع AXIS2 والتي استخدم هذا النوع، هل أحتاج إلى تطبيق بعض استقبال الرسائل المخصصة؟

هل كانت مفيدة؟

المحلول

عادة ما ترجمة XSD إلى كائنات Java مع Jaxb أو بعض آلية ربط أخرى (التي لديك العديد منها في AXIS2). أولئك الذين تولدوا أشياء مثلك تماما كما أظهروا: أي أن جميع السمات في الخيارات موجودة ولا ترى أي شيء يشير إلى أنه يمكن أن يكون واحد منهم فقط. إذا قمت بترجمة الاشياء مرة أخرى إلى XML، فلن يتم ملاحظة ذلك فقط إذا قمت بتبديل التحقق من الصحة. لا توجد مشكلة في الخيارات إذا كنت تدرك أنه لا ينبغي أن تقوم بتعيين كل من المتغيرات في وقت واحد في جافا - النتيجة يمكن أن تكون في بعض الأحيان أن أيا منهم يجعله في XML الذي تم إنشاؤه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top