سؤال

ما هي أفضل طريقة تسلسل HashTable (أو بيانات أفضل أبحر من خلال سلسلة مفهرس) مع الصابون/XML ؟

دعونا نقول لدي Foo يحتوي مكان الإقامة Bar[] Bars.A Bar كائن لديه مفتاح وقيمة.بشكل افتراضي, هذا يسلسل إلى XML التالي:

<Foo>
  <Bars>
    <Bar key="key0" value="value0"/>
    ...
  </Bars>
</Foo>

عن سلمان, هذا يسلسل إلى:

{"Foo":["Bars":[{"Key":"key0","Value":"key1} ... ]}]}

ما أود حقا أن يكون هذا هو تسلسل لتعكس على نحو أفضل الكامنة العلاقة.E. g. ،

<Foo>  
  <Bars>  
    <Key0 value="value0"/>
    <Key1 value="value1"/>
    ...
  </Bars>
</Foo>

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

لقد حاولت خلق BarsCollection موضوع تحديد مخصص التسلسل على ذلك لكن ذلك لا يبدو في الواقع الاحتجاج التسلسل على هذا الكائن.E. g.

void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) {  
  foreach (Bar bar in Bars){           
    info.AddValue(bar.Key. bar);
  }
}  

أي اقتراحات ؟ ما هي أفضل الممارسات هنا ؟

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

المحلول

أنا حقا لا أعتقد أن ما تريد يعكس هيكل أفضل.إلى تحديد مخطط (اعتقد XSD) من أجل هذا عليك أن تعرف كل إمكانات مفاتيح في وقت مبكر منذ كنت تشير إلى أنك تريد كل واحدة أن تكون منفصلة مخصصة نوع.من الناحية النظرية أشرطة سيكون مجموعة من الكائنات عقد كائنات من نوع Key0, Key1 مع كل من KeyN الطبقة التي تحتوي على قيمة العقار.أعتقد أن أول التسلسل في الواقع هو أفضل تعبير عن البنية الأساسية.والسبب أنه "يعمل" وكأنك تريد في JSON هو أن تفقد الكتابة -- كل شيء هو مجرد كائن.إذا كنت لا تهتم حول أنواع لماذا لا مجرد استخدام JSON ؟

نصائح أخرى

ISerializable لا تستخدم xml التسلسل;تستخدم ثنائي التسلسل.يمكنك أن تكون أفضل تنفيذ IXmlSerializable.

ولكن أعتقد أن KeyedCollection يسلسل مثل كنت أفكر.إلا أنك لن تحصل على /> /> منذ عناصر خريطة الطبقات.

هل يمكن أن تمر hashtable في الصابون التمديد.بهذه الطريقة, يمكنك تسلسل أنه أيا كانت الطريقة التي تريد.على الرغم من أن هناك تعليمات برمجية مخصصة لهذا يجب أن يكون على العميل والخادم.

أعتقد أنك في عداد المفقودين الأساسية الرئيسية من بروتوكول SOAP.

واحدة من الأشياء أنا أحب حول بروتوكول SOAP هو أنه يمكنك تحديد كائنات التعسفي (جنبا إلى جنب مع الأساليب) في ملف WSDL وتمرير هذه الكائنات حول واحدة من نهاية إلى أخرى باستخدام بروتوكول SOAP.لا يجب أن تسلسل البيانات في نهاية واحدة ثم unserialize على الآخر.

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