سؤال

أنا أبحث عن مساعدة لتحقيق ما يلي

يمثل المخطط سيارة، يمكن للمستخدمين إضافة المحرك واللون

عندما أرى XML يبدو وكأنه هذا:

<Car>
  <Engine>BigEngine</Engine>
  <Colour>Pink</Colour>
</Car>

ما أود القيام به هو لف السيارة داخل "السيارة"، أي

<Vehicle>
  <Car>
    <Engine>BigEngine</Engine>
    <Colour>Pink</Colour>
  </Car>
</Vehicle>

لست متأكدا من أفضل طريقة لتحقيق ذلك. أريد أن يتم لف المستكشف النموذجي و XML الذي تم إنشاؤه في "السيارة" ولكن لجميع النوايا والأغراض الأخرى التي يعمل المستخدم مع سيارة فقط

INFO: Visual Studio 2010، C # و DSL SDK لعام 2010

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

المحلول 2

لقد قمت بإصلاح هذا حسب ما يلي. أنا مضاعفة اشتقاق فئة السيارة وفي تسلسل السيارة أفعل هذا:

كتابة العناصر الإضافية:

  public partial class CarSerializer : CarSerializerBase
{
    public override void Write(SerializationContext serializationContext, ModelElement element, XmlWriter writer, RootElementSettings rootElementSettings)
    {
        // Adds the Model and LobSystem root elements to match that required by the SharePoint BCS
        writer.WriteStartElement("Garage");
        writer.WriteStartElement("Cars");
        base.Write(serializationContext, element, writer, rootElementSettings);
        writer.WriteEndElement();
        writer.WriteEndElement();
    }
}

لتكون قادرا على قراءة هذا مرة أخرى في أسلوب LoadModel السيارة في SerializationHelper وأين يتم الحصول على القارئ، أقرأ العناصر حتى أصل إلى السيارة.

....

XmlReader reader = XmlReader.Create(fileStream, settings);
reader.MoveToContent();
while (!reader.EOF && !reader.Name.Equals("Car"))
{
   reader.Read();
}

reader = reader.ReadSubtree();

//    using (global::System.Xml.XmlReader reader = global::System.Xml.XmlReader.Create(fileStream, settings))
using (reader)
{

....

نصائح أخرى

سأحاول اثنين مناهج مختلفة:


1st: تجاوز DSL حزمة فئة DOCDATA في ملف Docdata.cs وطريقة تجاوز

protected override void OnDocumentSaved(System.EventArgs e)

ثم أود أن خلق المجمع

بعد ذلك كنت تجاوز في Docdata.cs

protected override void OnDocumentLoading(System.EventArgs e)

وقبل استدعاء طريقة الأساس base.OnDocumentLoading(e); سأحذف من الملف.


2nd: ضمن DSL Explorer انتقل إلى سلوك تسلسل XML وتعيين فئة مجال السيارات "هو مخصص = صحيح".

هذا الحل ليس واضحا ولكن ليس معقدا كما يبدو في المقام الأول. يجب أن تحدد كل طريقة واحدة ولكن لكل طريقة مخصصة يمكنك استدعاء أسلوب DSL الذي تم إنشاؤه باسم "Defaulmethod" الذي يحتوي على سلوك تسلسل DSL الافتراضي.


أنا حاليا باستخدام VS 2005، لذلك قد تغيرت بعض الأشياء ...

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