سؤال

وأريد استخدام YAML للتواصل بعض البيانات عبر لغات متعددة. (كما أنها تفكر في "التسلسل لغة مستقلة".) واحدة من هذه اللغات هو MATLAB، ولكن لا أستطيع أن يبدو لإيجاد مكتبة YAML لتلك اللغة. لقد دققت ل "YAML ماتلاب" و "ماتلاب YAML تحليل" على جوجل وهناك لا يبدو أن هناك أي نتائج ذات الصلة. ومن خلال البحث في "YAML" على MATLAB الوسطى أيضا ترك لي خالي الوفاض.

هل هناك حقا أي مكتبة YAML الموجودة لMATLAB؟ أنا بخير مع كتابة واحدة، ولكن أود أن تجنب تكرار العمل. (ربما شيء للمشاركة؟)

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

المحلول

وأنا بمد كود يناير الصورة لدعم المزيد من أنواع البيانات، فضلا عن كتابة من البنية ماتلاب إلى YAML ملف . فهي ليست مجرد ملف متر واحد ولذلك فإنني تقع المصادر على http://code.google.com / ص / yamlmatlab / جيري

نصائح أخرى

واتصل مكتبات استيراد جافا YAML الموجودة من ماتلاب. هذا ينبغي أن يكون strightforward جميلة. جافا مطلب قابلية التشغيل البيني هو جيد جدا، انظر مساعدة MATLAB.

وهناك الآن مجمع ماتلاب لsnakeyaml:

http://code.google.com/p/yamlmatlab/

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

وأعتقد أن المثال التالي يمكن ان يوفر بعض الوقت.

أولا تحتاج لتحميل وثيقة YAML باستخدام ثعبان YAML:

javaaddpath C:\temp\snakeyaml-1.7.jar
import('org.yaml.snakeyaml.Yaml')

yamlreader = Yaml();
yml = fileread('C:\temp\test.yml');
jymlobj = yamlreader.load(yml);

وبعد ذلك سوف تحتاج للوصول إلى البيانات من الكائن جافا، فعلت ذلك باستخدام روتين التالية (لاحظ أن هذه ليست روتينية العام وأنها وضعت لنوع معين من الملفات YAML، حيث على سبيل المثال المصفوفات يتم تعريفها كما هو الحال في ماتلاب)

function Data = Hash2Struct(hashMap)

  Data = [];

  iterator = hashMap.keySet().iterator();
  while (iterator.hasNext())
     field = iterator.next();
     if ~isempty(field)
        d =  hashMap.get(field);
        switch class(d)
            case {'java.util.LinkedHashMap'}
                Data.(field) = Hash2Struct(d);
            case {'java.util.ArrayList'}
               Data.(field) = str2num(d.toString);               
            otherwise    
                Data.(field) = d;
        end
     end
  end

وحظا سعيدا، يناير

وAndyL لsankeyaml، إضافة إلى javapath الخاص بك، ثم استيراد ( 'org.yaml.snakeyaml.Yaml')، وأنه يعمل مثل مستندات. يتم الوصول إلى LinkedHashMap مما أدى أكثر أو أقل مثل البنية ماتلاب.

وهناك أيضا تنفيذ MEX التي كتبها Geoffr آدمز دعا حصيرة YAML باستخدام C ملزمة ل <ل أ href = "http://pyyaml.org/wiki/LibYAML" يختلط = "نوفولو"> libyaml محلل باعث).

ولكن لا يمكن جمعها على ويندوز حتى الان.

أدوات قاعدة البيانات ZozaniDB يتضمن تنفيذ مطلب أصلي لYAML (موزعة على النحو ملفات ع).

>> s=yaml_dump(struct('name','apple','calories',53))

  s =

name: apple
calories: 53

>> yaml_parse(s)

ans = 
        name: 'apple'
    calories: 53
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top