В офисе в настоящее время мы пишем приложение, которое будет генерировать файлы XML на основе предоставленной нам схемы. У нас есть схема в файле .XSD.
Существуют ли инструменты или библиотеки, которые мы можем использовать для автоматического тестирования, чтобы убедиться, что сгенерированный XML соответствует схеме?
Мы бы предпочли бесплатные инструменты, подходящие для коммерческого использования, хотя мы не будем связывать средство проверки схемы, поэтому его нужно использовать только разработчикам во время разработки.
Наш язык разработки - C ++, если это имеет какое-то значение, хотя я не думаю, что это должно быть так, как мы могли бы сгенерировать файл XML и затем выполнить проверку, вызвав отдельную программу в тесте.
xml
validation
xsd
schema
Джейсон Дагит
источник
источник
Ответы:
После некоторого исследования, я думаю, что лучший ответ - Xerces , поскольку он реализует весь XSD, является кроссплатформенным и широко используется. Я создал небольшой проект Java на github для проверки из командной строки с использованием анализатора JRE по умолчанию, обычно это Xerces. Это может быть использовано в Windows / Mac / Linux.
Существует также версия Xerces для C ++, если вы предпочитаете ее использовать. Утилита StdInParse может быть использована для вызова из командной строки. Кроме того, комментарий ниже указывает на эту более полную утилиту обертки .
Вы также можете использовать xmllint, который является частью libxml . Возможно, вы уже установили его. Пример использования:
Одна из проблем заключается в том, что libxml не реализует всю спецификацию, поэтому вы можете столкнуться с проблемами :(
В качестве альтернативы, если вы работаете в Windows, вы можете использовать msxml , но вам понадобится какая-то оболочка для ее вызова, например GUI, описанный в этой статье DDJ . Тем не менее, кажется, что большинство людей в Windows используют XML-редактор, такой как Notepad ++ (как описано в ответе Нейта ) или XML Notepad 2007, как предложено SteveC (есть также несколько коммерческих редакторов, которые я не буду здесь упоминать).
Наконец, вы найдете разные программы, которые, к сожалению, будут давать разные результаты. Во многом это связано со сложностью спецификации XSD. Вы можете проверить свою схему с помощью нескольких инструментов.
ОБНОВЛЕНИЕ : я расширил это в сообщении в блоге .
источник
xmllint
к сожалению, не соответствует регулярным выражениям XML, поэтому некоторые действительные регулярные выражения XML не будут проходить через негоЕсть плагин для Notepad ++ под названием XML Tools, который предлагает проверку и проверку XML на XSD.
Вы можете увидеть, как использовать это здесь .
источник
XML
самXSD
файл ссылается на файл,xsi:noNamespaceSchemaLocation="file.xsd"
XML Tools будет пытаться использовать его вместо того, чтобы давать вам диалог «set».xmlstarlet - это инструмент командной строки, который сделает это и многое другое:
Использование в вашем случае будет иметь вид:
источник
Для Windows есть бесплатный XML Notepad 2007 . Вы можете выбрать XSD для проверки
ОБНОВЛЕНИЕ: еще лучше, используйте Notepad ++ с плагином XML Tools
источник
Онлайновый валидатор XML Schema от DecisionSoft позволяет вам проверять XML-файл на соответствие данной схеме.
источник
Я использую Xerces:
http://xerces.apache.org/xerces-c/
источник
sudo apt install libxerces-c-samples
а затем проверить документ с помощьюStdInParse -v=always -n -s < document.xml
.http://www.xmlvalidation.com/
(Обязательно установите флажок «Проверять по внешней XML-схеме»)
источник
Я просто изучаю схему. Я использую RELAX NG и использую xmllint для проверки. Я разочарован ошибками, исходящими из xmlllint. Я хотел бы, чтобы они были немного более информативными.
Если в XML указан неправильный атрибут, xmllint сообщит вам имя неподдерживаемого атрибута. Но если вам не хватает атрибута в XML, вы просто получаете сообщение о том, что элемент не может быть проверен.
Я работаю над очень сложным XML с очень сложными правилами, и я новичок в этом, поэтому отслеживание того, какой атрибут отсутствует, занимает много времени.
Обновление: я только что нашел инструмент Java, который мне очень нравится. Его можно запустить из командной строки, например xmllint, и он поддерживает RELAX NG: https://msv.dev.java.net/
источник
Я нашел этот онлайн-валидатор из 'corefiling' весьма полезным -
http://www.corefiling.com/opensource/schemaValidate.html
После нескольких попыток проверить мой xsd, он дал мне подробную информацию об ошибке, поэтому я смог исправить ошибку в схеме.
источник
Редактор XML для быстрой и простой проверки XML доступен по адресу http://www.xml-buddy.com
Вам просто нужно запустить установщик, и после этого вы можете проверить свои XML-файлы с помощью простого в использовании настольного приложения или командной строки. Кроме того, вы также получаете поддержку Schematron и RelaxNG. Пакетная проверка также поддерживается ...
Обновление 13.01.2012: Средство командной строки является бесплатным и использует Xerces в качестве анализатора XML.
источник
IntelliJ IDEA - это отличный визуальный инструмент для проверки и генерации XSD из XML, интуитивно понятный и простой.
источник
Вы можете подключить свою XML-схему к Intellisense Microsoft Visual Studio. Эта опция дает вам как проверку в реальном времени, так и автозаполнение, что просто потрясающе.
У меня есть этот точный сценарий, работающий на моей бесплатной копии Microsoft Visual C ++ 2010 Express.
источник
Другой онлайновый валидатор XML Schema (XSD): http://www.utilities-online.info/xsdvalidation/ .
источник
Я склонен использовать xsd от Microsoft, чтобы помочь сгенерировать xsd из файла .NET. Я также разбираю разделы xml, используя xmlstarlet. Последний бесплатный инструмент, который будет вам полезен, это altovaxml, который доступен по этому адресу: http://www.altova.com/download_components.html .
Это позволяет мне сканировать все xml-файлы, выбирая, какой xsd использовать, анализируя xml.
Для создания XML я использую: xsd DOTNET.dll / тип: CFGCLASS & переименовать schema0.xsd CFGCLASS.xsd
Чтобы получить имя xsd, я использую: xmlstarlet sel -t -m / XXX / * -v local-name () $ 1 | sed 's / $ //'
Это позволяет мне выбрать правильный XSD, используя тег элемента в файле XML.
В результате я могу вызвать функцию bash, чтобы отсканировать все файлы XML и проверить их. Даже если они находятся в нескольких подкаталогах.
источник