شسد إلى ج class فئة باستخدام شسد سككس-شجرة محلل.طرق لفتح شمل من ملف.
-
21-12-2019 - |
سؤال
أنا أوسين مترجم شسد 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
الملفات.
إذا لم يكن هذا هو ما تريد ، واسمحوا لي أن أعرف في التعليقات وأستطيع أن أحاول لمساعدتك بعض أكثر.