كيفية إنشاء مستندات XML نموذجية من DTD أو XSD الخاصة بهم؟

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

  •  08-06-2019
  •  | 
  •  

سؤال

نحن نعمل على تطوير تطبيق يتضمن قدرًا كبيرًا من تحويلات XML.ليس لدينا أي بيانات اختبار إدخال مناسبة في حد ذاتها، فقط ملفات DTD أو XSD.نود إنشاء بيانات الاختبار بأنفسنا من هذه الملفات.هل هناك طريقة سهلة/مجانية للقيام بذلك؟

يحرر

من الواضح أنه لا توجد أدوات مجانية لهذا الغرض، وأنا أوافق على أن OxygenXML هي واحدة من أفضل الأدوات لهذا الغرض.

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

المحلول

أعتقد الأكسجين (http://www.oxygenxml.com/) يفعل ذلك أيضًا، ولكن هذا منتج تجاري آخر.إنها فكرة لطيفة، رغم ذلك...أوصي به بشدة لأي شخص يقوم بالكثير من أعمال XML.إنه يأتي في مكون إضافي لطيف لـ Eclipse أيضًا.

أعتقد أن هناك نسخة تجريبية مجانية كاملة الميزات مدتها 30 يومًا.

نصائح أخرى

في Visual Studio 2008 SP1 والإصدارات الأحدث مستكشف مخطط XML يمكن إنشاء مستند XML مع بعض نماذج البيانات الأساسية:

  1. افتح مستند XSD الخاص بك
  2. قم بالتبديل إلى مستكشف مخطط XML
  3. انقر بزر الماوس الأيمن على العقدة الجذرية واختر "إنشاء نموذج Xml"

Screenshot of the XML Schema Explorer

في الإصدارات الأخيرة من الحرة والمفتوحة المصدر كسوف IDE يمكنك من إنشاء مستندات XML من ملفات DTD وXSD.انقر بزر الماوس الأيمن على ملف *.dtd أو *.xsd محدد وحدد "إنشاء -> ملف XML...".يمكنك اختيار العنصر الجذر الذي سيتم إنشاؤه وما إذا كان يجب إنشاء السمات والعناصر الاختيارية.

بالطبع يمكنك استخدام Eclipse لإنشاء وتحرير ملفات مخطط DTD وXSD أيضًا.ولا تحتاج إلى تثبيت أي مكونات إضافية.يتم تضمينه في التوزيع القياسي.

لمستخدمي Intellij Idea:

ألقِ نظرة على الأدوات -> إجراءات XML

enter image description here

يبدو أنه يعمل بشكل جيد للغاية (بقدر ما اختبرت).

يحرر:

كما ذكر @naXa، يمكنك الآن أيضًا النقر بزر الماوس الأيمن على ملف XSD والنقر على "إنشاء مستند XML من مخطط XSD..."

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

البرنامج التعليمي متاح هنا:http://www.oasis-open.org/committees/download.php/29661/XSD%20and%20jCAM%20tutorial.pdf

ويمكن العثور على مزيد من المعلومات حول الأداة - التي تستخدم معيار آلية تجميع محتوى OASIS (CAM) لإعادة هيكلة XSD الخاص بك إلى بنية أكثر ملاءمة لـ XSLT - من موقع الموارد على الويب - http://www.jcam.org.uk

استمتع يا دي دبليو

يمكنك استخدام XML Instance Generator الذي يعد جزءًا من مدقق المخططات المتعددة Sun/Oracle.

ينص ملف README.txt على ما يلي:

Sun XML Generator هو أداة Java لإنشاء مثيلات XML مختلفة من عدة أنواع من المخططات.وهو يدعم DTD ، مساحة الاسترخاء ، Core Core ، Trex ، ومجموعة فرعية من مخطط W3C XML الجزء 1.[...]

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

تحميل وفك xmlgen.zip من صفحة تحميل msv وقم بتشغيل الأمر التالي للحصول على تعليمات الاستخدام التفصيلية:

java -jar xmlgen.jar -help

يبدو أن الأداة قد تم إصدارها بموجب ترخيص BSD؛يمكن الوصول إلى الكود المصدري من هنا

XMLSpy يفعل ذلك لك، على الرغم من أنه ليس مجانيا...

أعتقد أن ستوديو XML السائل يفعل ذلك نيابةً عنك وهو مجاني، لكنني لم أستخدمه شخصيًا لإنشاء بيانات الاختبار.

يبدو أنه لم يتمكن أحد من الإجابة على السؤال حتى الآن :)

أستخدم MOXy الخاص بـ EclipseLink لإنشاء فئات ربط ديناميكيًا ثم الانتقال بشكل متكرر عبر الأنواع المرتبطة.إنه ثقيل إلى حد ما، لكنه يسمح بحقن قيمة XPath بمجرد إنشاء شجرة الكائن:

InputStream in = new FileInputStream(PATH_TO_XSD);
DynamicJAXBContext jaxbContext = 
            DynamicJAXBContextFactory.createContextFromXSD(in, null, Thread.currentThread().getContextClassLoader(), null);
DynamicType rootType = jaxbContext.getDynamicType(YOUR_ROOT_TYPE);
DynamicEntity root = rootType.newDynamicEntity();
traverseProps(jaxbContext, root, rootType, 0);

TraverseProps هي طريقة عودية بسيطة جدًا:

private void traverseProps(DynamicJAXBContext c, DynamicEntity e, DynamicType t, int level) throws DynamicException, InstantiationException, IllegalAccessException{
        if (t!=null) {
            logger.info(indent(level) + "type [" + t.getName() + "] of class [" + t.getClassName() + "] has " + t.getNumberOfProperties() + " props");
            for (String pName:t.getPropertiesNames()){
                Class<?> clazz = t.getPropertyType(pName);
                logger.info(indent(level) + "prop [" + pName + "] in type: " + clazz);
                //logger.info("prop [" + pName + "] in entity: " + e.get(pName));

                if (clazz==null){
                    // need to create an instance of object
                    String updatedClassName = pName.substring(0, 1).toUpperCase() + pName.substring(1);
                    logger.info(indent(level) + "Creating new type instance for " + pName + " using following class name: " + updatedClassName );
                    DynamicType child = c.getDynamicType("generated." + updatedClassName);
                    DynamicEntity childEntity = child.newDynamicEntity();
                    e.set(pName, childEntity);
                    traverseProps(c, childEntity, child, level+1);
                } else {
                    // just set empty value
                    e.set(pName, clazz.newInstance());
                }
            }
        } else {
            logger.warn("type is null");
        }
    }

يعد تحويل كل شيء إلى XML أمرًا سهلاً للغاية:

Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);

يمكنك أيضًا استخدام XMLPad (مجاني الاستخدام) الموجود هنا http://www.wmhelp.com لإنشاء عينات XML الخاصة بك.من القائمة :XSD -> إنشاء ملف XML نموذجي.

قامت Microsoft بنشر أداة "مولد المستندات" كنموذج. هذا مقال الذي يصف بنية التطبيق النموذجي وتشغيله بشيء من التفصيل.

إذا كنت تريد فقط تشغيل أداة إنشاء العينات، انقر هنا وتثبيت MSI.

انه مجانا.المصدر متاح.يتطلب .NET Framework للتشغيل.يعمل فقط مع XSD.(وليس الاسترخاء NG أو DTD).

XML-XIG:مولد مثيل XML

http://xml-xig.sourceforge.net/

سيكون هذا المصدر المفتوح مفيدًا.

مايكروسوفت أوفيس لديه 'مسار المعلومات'، والذي يأخذ XSD كاستيراد ويتيح لك تحديد محرر قائم على النموذج بسرعة وسهولة لإنشاء ملفات XML.يحتوي على وضعين - أحدهما حيث تقوم بتعريف النموذج، ووضع آخر حيث تقوم بإنشاء ملف XML عن طريق ملء النموذج.أعتقد أنه جاء لأول مرة مع Office 2003، ولم يقوم معظم الأشخاص بتثبيته مطلقًا.يصدمني كم أحب ذلك.

يمكن لـ XMLBlueprint 7.5 القيام بما يلي:- إنشاء عينة XML من DTD - إنشاء عينة XML من مخطط الاسترخاء NG - قم بإنشاء عينة XML من مخطط XML

النسخة مفتوحة المصدر من SoapUI يمكنه إنشاء طلبات SOAP من WSDL (الذي يحتوي على تعريفات نوع XSD)، لذا يبدو أن هناك تطبيقًا مفتوح المصدر لهذه الوظيفة.لسوء الحظ، لم أحسب أي مكتبة تستخدم لهذا.

يحتوي Liquid XML Studio على مولد عينة XML المعالج الذي سيقوم ببناء نماذج ملفات XML من مخطط XML.يبدو أن البيانات الناتجة تتوافق مع المخطط (لا يمكنها إنشاء بيانات لأنماط التعبير العادي).

Generate an XML Sample from an XSD

ال برنامج OpenXSD تذكر المكتبة أن لديهم دعمًا لإنشاء مثيلات XML استنادًا إلى XSD.التحقق من ذلك.

لاكتمال سأضيف http://code.google.com/p/jlibs/wiki/XSInstance, ، والذي تم ذكره في سؤال مشابه (ولكن خاص بـ Java): أي Java "API" لإنشاء نموذج XML من XSD؟

يقوم مخطط XML بذلك أيضًا؛تعليمات هنا

http://www.xmlblueprint.com/help/html/topic_170.htm

إنها ليست مجانية، ولكن هناك نسخة تجريبية مجانية مدتها 10 أيام؛يبدو سريعًا وفعالًا؛لسوء الحظ إنه Windows فقط.

هناك ايضا http://xsd2xml.com/, ، مولد XSD إلى XML عبر الإنترنت

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