ما هي مزايا ومفاقر Yaml VS XML للكائن الرسم البياني للإزالة / التسلسل؟

StackOverflow https://stackoverflow.com/questions/561286

  •  05-09-2019
  •  | 
  •  

سؤال

حالة الاستخدام هي تسلسل طويل الأجل الرسوم البيانية للكائنات المعقدة بتنسيق نصي.

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

المحلول

اجابة قصيرة

إذا كنت تتوقع أن يقوم البشر بإنشاء / اقرأ المستند (ملفات التكوين، والتقارير، إلخ)، فقد تفكر في Yaml، وإلا تختار XML (للاتصالات إلى الجهاز).

اجابة طويلة

طول

كل من XML و yaml هي نفسها تقريبا. يمكن لمكتبات XML جيدة تخطي جميع Whitespaces بينما يلزم Yaml. يحتوي Yaml المجمع على الكثير من مسافات المسافة البادئة (لا تستخدم علامات التبويب!)

فشل في الشبكة

غالبا ما يكون جزء من وثيقة YAML مستند صالحا، لذلك إذا كانت وثيقة YAML غير مكتملة لا توجد طريقة تلقائية للكشف عنها. سيحقق محلل XML دائما ما إذا كانت وثيقة على الأقل تشكيلها جيدا، ويمكن التحقق من الصلاحية على المخطط تلقائيا.

دعم اللغة

العديد من لغات البرمجة الرئيسية يامل و XML.

معرفة عامة

لا تحتاج إلى شرح المطور (حتى Junior) ما هو XML. يامل ليس هذا يستخدم على نطاق واسع حتى الآن.

مخطط

مع XML يمكن لكل من المنتجين والمستهلك الاتفاق على مخطط لإنشاء تنسيق موثوق لاتصال البيانات.

بناء الجملة

XML غني جدا: مساحات الأسماء والكيانات والسمات.

التبعيات الخارجية

يحتوي Java و Python على دعم XML في المكتبات القياسية. يامل يتطلب تبعية خارجية لهذه اللغات.

نضج

مواصفات XML أكبر وسنا وهي صخرة صلبة؛ في حين أن يام لا يزال قيد الإنشاء. YAML 1.1 يحتوي على تناسق (هناك حتى ويكي للحفاظ على قائمة الأخطاء).

XSLT.

إذا كنت بحاجة إلى تحويل مستند XML إلى تنسيق آخر (XML، HTML، YAML، PDF)، يمكنك استخدام XSLT أثناء YAML لديك لكتابة برنامج.

نصائح أخرى

أوافق: YAML أكثر قابلية للقراءة، ويبدو كأنه مناسبا جيدا لفعل ملفات التكوين Dev-reated / قابل للكتابة. ولكن هناك فائدة قليلة للاتصال بالآلة. أيضا، بالنسبة للعلامة النصية (Forte التقليدية XML، مثل XHTML، Docbook)، XML أفضل.

على وجه التحديد لاستسلسل الكائنات لا أستطيع التفكير في سبب وجيه لاستخدام YAML.

في الواقع، أود أن أقترح النظر في JSON بدلا من ذلك: إنه يعتمد على كائن (أو، والهيكل، لأنه لا يوجد أي سلوك)، بدلا من نماذج التسلسل الهرمي (XML) أو علائق (SQL). لهذا السبب، إنه أمر طبيعي أكثر قليلا لبيانات الكائنات. لكن XML يعمل بشكل جيد أيضا، وهناك العديد من الأدوات الجيدة.

آخر شيء: المصطلحات "طويلة الأجل" و "تسلسل الكائن" لا تخلط. يتضمن الأخير اقتران وثيق: تتغير الأشياء الخاصة بك، وكذلك التسلسل. لا ينبغي استخدام تسلسل الكائن الفعلي لتخزين البيانات، أو تعيين البيانات / تعيين البيانات أكثر ملاءمة. ولكن قد تكون قد تستخدم التسلسل بمعنى "تخزين / استعادة البيانات باستخدام مغلفة كائن مريحة"؛ إذا كان الأمر كذلك، فهذا جيد.

XML لديه XPath و xquery.

لكن YAML لديه مفاتيح معقدة وتتيح لك نسخ قيمة واحدة في العديد من الأماكن ذات الأسماء المستعارة (& * بناء جملة).

أعتقد أن قوة Yaml ليست قابلة للقراءة بشرية، كما يقولون ... يمكنني قراءة XML منسقة بشكل صحيح على ما يرام.

فعلا قوة يامل هي الإنسان عناوين. وبعد إذا كنت على iPhone كتابة بت بيانات سريعة من البيانات لأنك مهندس معماري طراز بيانات أو من هذا القبيل، فإن YAML أسهل بكثير تكتب فيها. الأسماء المستعارة رائعة لذلك.

ثم يمكنك تحويله إلى أي شيء.

الميزات الأكثر تقدما في Yaml مثل الطباعة والعلامات الصارمة، أنا لا أستخدم ذلك أبدا. يناقش شباب YAML حاليا إصدار "Yaml Yaml" للتنافس مع JSON، لأولئك منا يستخدمونه بشكل أساسي مثل نظافة JSON مع الأسماء المستعارة.

لكن XML أفضل ككلغة ترميز حيث تريد تمييز أجزاء البيانات البصرية مرئية للمستخدم النهائي، كما أشار شخص آخر إلى الخارج.

إذا كنت تستخدم YAML، فقد يكون لديك عدد أقل قليلا من البايتات التي تذهب عبر السلك. لا يكفي أن تكون ذات أهمية أعتقد، ولكن في بعض الحالات يمكن أن تكون ذات صلة. أعتقد أيضا أن YAML أسهل في القراءة والعمل معه في محرر نصوص، ولكن هذا هو نوع شخصي حقا، ولن يهم حقا إذا لم يكن هذا سيناريو استخدام طبيعي.

إذا لم يكن عرض النطاق الترددي عاملا ولن تعمل مع YAML / XML في محرر نصي في كثير من الأحيان، أعتقد أنه لا يهم حقا.

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