Инструмент проверки XML-схемы (XSD)?

В офисе мы в настоящее время пишем приложение, которое будет генерировать XML файлы против схемы, которую мы получили. У нас есть схема в файле .XSD.

Есть ли инструмент или библиотеки, которые мы можем использовать для автоматического тестирования, чтобы проверить, что сгенерированный XML соответствует схеме?

Мы предпочли бы бесплатные инструменты, которые подходят для коммерческого использования, хотя мы не будем связывать контролер схемы, поэтому его нужно использовать только разработчикам во время разработки.

Наш язык разработки - это С++, если это имеет какое-то значение, хотя я не думаю, что это необходимо, поскольку мы могли бы сгенерировать XML файл, а затем выполнить проверку, вызвав отдельную программу в тесте.

+252
24 сент. '08 в 1:19
источник поделиться
14 ответов

После некоторых исследований я считаю, что лучший ответ Xerces, поскольку он реализует все XSD, является кросс-платформенным и широко используется, Я создал малый Java-проект на github для проверки из командной строки с использованием парсера JRE по умолчанию, который обычно является Xerces. Это можно использовать в Windows/Mac/Linux.

Существует также С++ версия Xerces, если вы предпочитаете использовать это. утилита StdInParse может использоваться для вызова из командной строки. Кроме того, комментарий ниже указывает на эту более полную утилиту обертки.

Вы также можете использовать xmllint, который является частью libxml. Возможно, вы уже установили его. Пример использования:

xmllint --noout --schema XSD_FILE XML_FILE

Одна из проблем заключается в том, что libxml не реализует всю спецификацию, поэтому вы можете столкнуться с проблемами: (

Кроме того, если вы находитесь в Windows, вы можете использовать msxml, но для его вызова вам понадобится какая-то оболочка, например, GUI, описанный в этой статье DDJ. Однако большинство людей в Windows используют XML-редактор, например Notepad ++ (как описано в Nate answer) или XML Notepad 2007 как , предложенный SteveC (есть также несколько коммерческих редакторов, о которых я не буду упоминать здесь).

Наконец, вы найдете разные программы, к сожалению, дадут разные результаты. Это во многом связано со сложностью спецификации XSD. Вы можете протестировать свою схему несколькими инструментами.

ОБНОВЛЕНИЕ: я расширил это в сообщении .

+224
24 сент. '08 в 19:41
источник

Связанные вопросы


Похожие вопросы

Там есть плагин для Notepad ++, называемый Инструменты XML, который предлагает проверку и проверку XML на XSD.

Вы можете увидеть, как его использовать здесь.

+107
06 июл. '09 в 18:52
источник

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
+21
24 сент. '08 в 1:49
источник

Для Windows есть бесплатный XML Notepad 2007. Вы можете выбрать XSD для проверки на

+14
12 окт. '10 в 13:19
источник

В режиме онлайн Validation вы можете проверить XML файл по данной схеме.

+5
02 июн. '09 в 12:49
источник

Я использую Xerces:

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

+3
24 сент. '08 в 1:44
источник

XML-редактор для быстрой и простой проверки XML доступен по адресу http://www.xml-buddy.com

Вам просто нужно запустить установщик, после чего вы сможете проверить свои XML файлы с помощью простого в использовании настольного приложения или командной строки. Кроме того, вы также получаете поддержку Schematron и RelaxNG. Также поддерживается поддержка пакетной проверки...

Обновление 1/13/2012: инструмент командной строки можно использовать и использует Xerces в качестве парсера XML.

+3
09 дек. '09 в 8:25
источник

Я нашел этот онлайн-валидатор с 'corefiling' весьма полезным -
http://www.corefiling.com/opensource/schemaValidate.html

Попробовав несколько инструментов для проверки моего xsd, это тот, который дал мне подробную информацию об ошибке - так что я смог исправить ошибку в схеме.

+2
28 мая '12 в 11:31
источник

http://www.xmlvalidation.com/

(Обязательно проверьте флажок "Проверить на внешнюю схему XML" )

+2
05 янв. '09 в 19:33
источник

Я просто изучаю Схему. Я использую RELAX NG и использую xmllint для проверки. Я расстраиваюсь ошибками, исходящими из xmlllint. Хотелось бы, чтобы они были немного более информативными.

Если в XML есть неправильный атрибут, то xmllint сообщает вам имя неподдерживаемого атрибута. Но если вам не хватает атрибута в XML, вы просто получаете сообщение о том, что элемент не может быть проверен.

Я работаю над очень сложным XML с очень сложными правилами, и я новичок в этом, поэтому отслеживание отсутствующего атрибута занимает много времени.

Обновление: я просто нашел инструмент java, мне очень нравится. Его можно запустить из командной строки, например, xmllint, и поддерживает RELAX NG: https://msv.dev.java.net/

+2
23 нояб. '10 в 16:45
источник

Вы можете подключить вашу XML-схему к Microsoft Visual Studio Intellisense. Этот параметр дает вам как проверку в реальном времени, так и автозаполнение, что просто потрясающе.

У меня есть этот точный сценарий, запущенный на моей бесплатной копии Microsoft Visual С++ 2010 Express.

+1
10 окт. '14 в 21:44
источник

один отличный визуальный инструмент для проверки и генерации XSD из XML - IntelliJ IDEA, интуитивно понятный и простой.

+1
08 окт. '12 в 10:43
источник

Еще один модуль проверки подлинности XML-схемы (XSD): http://www.utilities-online.info/xsdvalidation/.

+1
22 июл. '15 в 6:13
источник

Я использую xsd из Microsoft, чтобы помочь сгенерировать xsd из файла .NET. Я также разбираю разделы xml с помощью xmlstarlet. Последним бесплатным инструментом, который будет вам полезен, является altovaxml, который доступен по этому URL-адресу: http://www.altova.com/download_components.html.

Это позволяет мне сканировать все файлы xml, которые собирают хsd, используя синтаксический анализ 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/type: CFGCLASS и переименовать schema0.xsd CFGCLASS.xsd

Чтобы получить имя xsd, я использую:   xmlstarlet sel -t -m/XXX/* -v local-name() $1 | sed 's/$//'

Это позволяет мне выбрать правильный XSD с помощью тега элемента в XML файле.

В результате я могу вызвать функцию bash для сканирования всех файлов XML и проверки их. Даже если они находятся в нескольких подкаталогах.

0
22 мая '12 в 18:53
источник

Посмотрите другие вопросы по меткам или Задайте вопрос