شسد إلى ج class فئة باستخدام شسد سككس-شجرة محلل.طرق لفتح شمل من ملف.

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

سؤال

أنا أوسين مترجم شسد 3.3.0 من أجل تحليل ملف شسد (شمل أفضل صديق) إلى فئة C.(انظر رابط الويب الأخير)

اسم القائد هو

شسد سككس-شجرة (خيارات) ملف.شسد

(+معلومات http://www.codesynthesis.com/projects/xsd/documentation/cxx/tree/guide/)

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

// Parse a URI or a local file.
//

::std::auto_ptr< ::hello_t >
hello (const ::std::string& uri,
       ::xml_schema::flags f = 0,
       const ::xml_schema::properties& p = ::xml_schema::properties ());

تتلقى سلسلة مع اسم الملف

سلسلة وأوري = " مرحبا.شسد"

وإنشاء الكائن الذي تستخدمه في الرئيسي.سككس.

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

أنا حل بعض المشاكل تجميع باستخدام خيارات بمختلف من وثائق مترجم كوديسيس (http://www.codesynthesis.com/projects/xsd/documentation/xsd.xhtml).هناك خيارات مختلفة حول ما تريد تجميعه ، وكيف تريد القيام بذلك ، وما إلى ذلك...ولكن لا يمكنني العثور على أي خيارات لتمكين الطرق المستخدمة "لتحليل أوري أو ملف محلي.".

إعطاء المزيد من أونفورماتيون ، وثائق شمل-شسد هي وثائق بروتوكول كبمل.

شكرا لك على مساعدتك!

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

المحلول 2

وجدت الحل بنفسي!

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

أحذف هذا الخيار وأضيفته "root-letement-all" الذي ينشئ طرق التحليل لجميع كائنات المدارس!

الآن يعمل برنامجي!شكرا!

نصائح أخرى

أنا استخدم هذا المنتج في كل وقت.

هنا مثال على ما تحاول القيام به (على ما أعتقد):

xsd cxx-tree hello.xsd

الذي يولد hello.hxx و ال hello.cxx, ، كما قلت.أعتقد أن المكان الذي تقصر فيه هو فهم كيفية استخدام هذه الملفات لتحميل ملف شمل (على سبيل المثال ، تحميل "ملف محلي").

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

void load(const std::string &xml, const std::string &xsd) {
    xml_schema::properties properties;
    properties.no_namespace_schema_location(xsd);
    // or, if you have a specific namespace you want to load, use
    // props.schema_location("which namespace", xsd);
    try {
        std::auto_ptr< ::hello_t> xml_file = hello(xml, 0, props);
        // operate on the xml_file via "->" notation
        std::cout << xml_file->hello() << std::endl;

    } catch (const ::xml_schema::exception &e) {
        std::ostringstream os;
        os << e.what();
        // report the error as you see fit, use os.str() to get the string
    }

}

تأكد من ربط *.cxx ملف إلى الخاص بك *.cpp الملفات.

إذا لم يكن هذا هو ما تريد ، واسمحوا لي أن أعرف في التعليقات وأستطيع أن أحاول لمساعدتك بعض أكثر.

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