it-swarm-ru.tech

Как генерировать классы JAXB только из XML

Мне нужно генерировать классы из XML, который не предоставляет схему. Я понимаю, что это почти бесполезно, но дело в том, что у нас есть XML, он структурирован, и мы должны быть в состоянии создать модель из XML. Раньше я делал это вручную, но текущие xml-документы, с которыми я работаю, довольно большие, и мое время, вероятно, было бы лучше потратить на создание того, что делает то, что мне нужно. Но, полагаю, это уже сделано, и я просто не могу его найти.

Есть указатели?

56
DanInDC

Есть много доступных инструментов (быстрый поиск в Google должен их получить), которые могут генерировать XSD из XML, принимая строковый тип практически для всего. Вы должны быть в состоянии использовать этот XSD для запуска JAXB для получения классов.

Вот онлайн-инструмент , который позволяет вам это сделать.

А вот и крышка экрана: enter image description here

62
Bala R

Из вашего xml-файла вы можете создать файл определения схемы XML (XSD). Получив XSD, вы сможете сгенерировать код, будь то для Java, C #, C++ или для всего вышеперечисленного.

Если у вас есть Visual Studio, вы можете использовать xsd.exe для создания файла XSD.

Рекомендации:

  • www.xmlforasp.net/CodeBank/System_Xml_Schema/BuildSchema/BuildXMLSchema.aspx

  • msdn.Microsoft.com/en-us/library/x6c1kb0s(v=vs.71).aspx

  • Синтаксис команды: xsd file.xml [/ outputdir: каталог]

  • поэтому "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\xsd.exe" example.xml приводит пример. Файл xsd находится в том же каталоге, что и файл xml.

XSD в Java: ссылка:

XSD в C++: ссылки:

  • stackoverflow.com/questions/445905/xml-schema-to-c-classes
  • www.codesynthesis.com/products/xsd/

XSD в C #: ссылка:

  • quickstart.developerfusion.co.uk/quickstart/howto/doc/xmlserialization/XSDToCls.aspx
  • Синтаксис команды: "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\xsd.exe" -c -l: c # -n: SomeNameSpace example.xsd
11
James Oravec

Если XML был создан JAXB, его можно легко преобразовать обратно в объекты. В Oracle есть учебник , который иллюстрирует один из способов сделать это. Spring Framework предлагает аналогичные функции с использованием JAXB, которые очень удобны.

1
Johan Sjöberg