سؤال

في مكتب نحن حاليا كتابة تطبيق من شأنها أن تولد ملفات XML ضد مخطط التي أعطيت لنا.لدينا مخطط في .ملف XSD.

هل هناك أداة أو المكتبات التي يمكننا استخدامها لاختبار الآلي للتحقق من أن XML الذي تم إنشاؤه مباريات المخطط?

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

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

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

المحلول

بعد بعض البحث, أعتقد أن أفضل إجابة Xerces, كما تنفذ جميع XSD هو عبر منصة على نطاق واسع.لقد خلق Java الصغيرة المشروع على github للتحقق من سطر الأوامر باستخدام الافتراضي JRE محلل ، والتي عادة Xerces.هذا يمكن استخدامها على ويندوز/ماك/لينكس.

هناك أيضا C++ الإصدار من Xerces المتاحة إذا كنت تفضل استخدام ذلك.على StdInParse فائدة يمكن استخدامها للاتصال من سطر الأوامر.كما المعلقين أدناه يشير إلى هذا أكمل المجمع فائدة.

هل يمكن أيضا استخدام xmllint ، الذي هو جزء من libxml.قد يكون بالفعل قد ركبت عليه.مثال على الاستخدام:

xmllint --noout --schema XSD_FILE XML_FILE

مشكلة واحدة هي أن libxml لا تنفيذ جميع المواصفات ، إذا كنت قد واجهت مشاكل :(

بدلا من ذلك, إذا كنت على ويندوز, يمكنك استخدام msxml, ولكن سوف تحتاج إلى بعض النوع من المجمع أن نسميها ، مثل واجهة المستخدم الرسومية الموصوفة في هذا DDJ المادة.ومع ذلك ، يبدو أن معظم الناس على ويندوز استخدام XML محرر مثل Notepad++ (كما هو موضح في نيت الإجابة) أو XML Notepad 2007 كما اقترح SteveC (هناك أيضا عدة التجارية المحررين التي لن أذكرها هنا).

أخيرا, سوف تجد برامج مختلفة للأسف تعطي نتائج مختلفة.هذا يرجع إلى حد كبير إلى تعقيد XSD المواصفات.قد ترغب في اختبار المخطط مع العديد من الأدوات.

التحديث:لقد توسعت على هذا في بلوق وظيفة.

نصائح أخرى

هناك البرنامج المساعد Notepad++ دعا XML أن يقدم XML التحقق والتثبت ضد XSD.

يمكنك ان ترى كيفية استخدامه هنا.

xmlstarlet هو أداة سطر الأوامر التي سوف تفعل هذا وأكثر:

$ xmlstarlet val --help
XMLStarlet Toolkit: Validate XML document(s)
Usage: xmlstarlet val <options> [ <xml-file-or-uri> ... ]
where <options>
  -w or --well-formed        - validate well-formedness only (default)
  -d or --dtd <dtd-file>     - validate against DTD
  -s or --xsd <xsd-file>     - validate against XSD schema
  -E or --embed              - validate using embedded DTD
  -r or --relaxng <rng-file> - validate against Relax-NG schema
  -e or --err                - print verbose error messages on stderr
  -b or --list-bad           - list only files which do not validate
  -g or --list-good          - list only files which validate
  -q or --quiet              - do not list files (return result code only)

NOTE: XML Schemas are not fully supported yet due to its incomplete
      support in libxml2 (see http://xmlsoft.org)

XMLStarlet is a command line toolkit to query/edit/check/transform
XML documents (for more information see http://xmlstar.sourceforge.net/)

الاستخدام في الحالة سيكون على غرار:

xmlstarlet val --xsd your_schema.xsd your_file.xml

ويندوز هناك مجانا XML Notepad 2007.يمكنك اختيار XSD على التحقق من صحة ضد

على الانترنت مخطط XML مدقق من DecisionSoft يسمح لك للتحقق من ملف XML ضد معين المخطط.

يمكنني استخدام Xerces:

http://xerces.apache.org/xerces-c/

XML محرر سريعة وسهلة التحقق من صحة XML هو متاح في http://www.xml-buddy.com

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

تحديث 1/13/2012:سطر الأوامر أداة مجانية الاستخدام ويستخدم Xerces كما محلل XML.

http://www.xmlvalidation.com/

(تأكد من التحقق "من صحة الخارجية ضد مخطط XML" مربع)

أنا فقط التعلم المخطط.أنا باستخدام الاسترخاء NG باستخدام xmllint للتحقق من صحة.أنا محبط من الأخطاء يخرج من xmlllint.أتمنى كانوا قليلا أكثر بالمعلومات.

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

أنا أعمل على بعض معقدة جدا XML مع قواعد معقدة جدا, و أنا جديد فى هذا تعقب الذي السمة مفقودة يستغرق وقتا طويلا.

تحديث:أنا فقط وجدت جافا أداة يعجبني كثيرا.يمكن تشغيله من سطر الأوامر مثل xmllint وتدعم الاسترخاء NG: https://msv.dev.java.net/

لقد وجدت هذا على الانترنت المصادقة من corefiling' مفيدة جدا -
http://www.corefiling.com/opensource/schemaValidate.html

بعد محاولة عدد قليل من الأدوات للتحقق من بلدي xsd هذا هو الذي أعطاني خطأ مفصلة معلومات - لذلك كنت قادرا على إصلاح الخطأ في المخطط.

واحد كبير البصرية أداة للتحقق من صحة وتوليد XSD من XML IntelliJ فكرة بديهية وبسيطة.

يمكنك الاتصال الخاص بك مخطط XML Microsoft Visual Studio التحسس الذكي.هذا الخيار يتيح لك سواء في الوقت الحقيقي التحقق من صحة الإكمال التلقائي, الذي هو مجرد رهيبة.

لدي هذا السيناريو بالضبط يعمل على نسخة مجانية من Microsoft Visual C++ 2010 Express.

آخر على الانترنت مخطط XML (XSD) المصادقة: http://www.utilities-online.info/xsdvalidation/.

أنا أميل إلى استخدام xsd من Microsoft للمساعدة في توليد xsd من .صافي الملف.أنا أيضا تحليل أقسام xml باستخدام xmlstarlet.النهائي مجانا أداة من شأنها أن تكون ذات فائدة لك هو altovaxml ، وهو متاح على هذا الرابط: http://www.altova.com/download_components.html .

هذا يسمح لي أن مسح جميع ملفات xml التقاط التي xsd إلى استخدام طريق تحليل xml.

# Function:
#    verifyschemas - Will validate all xml files in a configuration directory against the schemas in the passed in directory
# Parameters:
#    The directory where the schema *.xsd files are located.  Must be using dos pathing like: VerifySchemas "c:\\XMLSchemas\\"
# Requirements:
#    Must be in the directory where the configuration files are located
#
verifyschemas()
{
    for FILENAME in $(find . -name '*.xml' -print0 | xargs -0)
    do
        local SchemaFile=$1$(getconfignamefromxml $FILENAME).xsd
        altovaxml /validate $FILENAME /schema $SchemaFile > ~/temp.txt 2> /dev/null
        if [ $? -ne 0 ]; then
            printf "Failed to verify: "
            cat ~/temp.txt | tail -1 | tr -d '\r'
            printf "    - $FILENAME with $SchemaFile\n"
        fi
    done
}

لتوليد xml يمكنني استخدام:xsd DOTNET.dll /النوع:CFGCLASS & rename schema0.xsd CFGCLASS.xsd

للحصول على xsd اسم يمكنني استخدام:xmlstarlet sel -t-m /XXX/* -v المحلية-اسم() $1 | sed 's/ $//'

هذا يسمح لي أن لاقط الصحيح XSD باستخدام عنصر الوسم داخل ملف xml.

والنتيجة الصافية هي التي يمكن أن أدعو باش تعمل على مسح جميع ملفات XML والتحقق منها.حتى لو كانوا في الدلائل متعددة.

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