Что такое JAXB и почему я использовал бы его? [закрытый]

Я думаю, что в методе singer_filter вы должны сделать что-то вроде:

def singer_filter(self, queryset, name, value):
    return queryset.filter(song_id__singer_id__name_icontains=value)

Я не проверял это, но я думаю, что что-то подобное должно работать, если не разрешено третье отношение __. Посмотрите здесь: https://django-filter.readthedocs.io/en/master/ref/filters.html?highlight=method

104
задан halfer 18 February 2017 в 21:24
поделиться

6 ответов

Я - большой поклонник JAXB для управления XML. В основном это предоставляет решение этой проблемы (я принимаю знакомство с XML, структурами данных Java и XML-схемами):

Работа с XML является трудной. Каждому нужен способ взять XML-файл - который является в основном текстовым файлом - и преобразуйте его в своего рода структуру данных, которой может тогда управлять Ваша программа.

JAXB возьмет XML-схему, что Вы пишете и создаете ряд классов, которые соответствуют той схеме. Утилиты JAXB создадут иерархию структур данных для управления этим XML.

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

мне нравится JAXB, потому что это просто в использовании, и идет с Java 1.6 (если Вы используете 1.5, можно загрузить JAXB .jars.) Способ, которым это создает иерархию классов, интуитивен, и по моему опыту, делает достойное задание, абстрагирующее далеко "XML" так, чтобы я мог сфокусироваться на "данных".

Так для ответа на вопрос: Я ожидал бы, что для небольших XML-файлов JAXB мог бы быть излишеством. Это требует, чтобы Вы создали и поддержали XML-схему и использовали "стандартные методы учебника" использования классов Java для структур данных. (Основные классы, маленькие внутренние классы для представления "узлов" и огромной иерархии их.) Так, JAXB является, вероятно, не настолько большим для простого линейного списка "предпочтений" приложения.

, Но если у Вас есть довольно сложная XML-схема и много данных, содержавших в нем, тогда JAXB является фантастическим. В моем проекте я преобразовывал большие объемы данных между двоичным файлом (который был использован программой C), и XML (так, чтобы люди могли использовать и изменить те данные). Получающаяся XML-схема была нетривиальна (много уровней иерархии, некоторые поля могли быть повторены, другие не могли), таким образом, JAXB был полезен в способности управлять этим.

96
ответ дан Vishal Verma 24 November 2019 в 04:10
поделиться

Вот причина не использовать его: производительность страдает. Существует много издержек при маршалинге и немаршалинге. Вы могли бы также хотеть рассмотреть другой API для привязки объекта XML - такой как JiBX: http://jibx.sourceforge.net/

23
ответ дан codefinger 24 November 2019 в 04:10
поделиться

Это - "ORM для XML". Чаще всего используемый вместе с JAX-WS (и действительно реализации Sun разрабатываются вместе) для WS системы Звезды смерти.

19
ответ дан Tom Hawtin - tackline 24 November 2019 в 04:10
поделиться

С JAXB можно автоматически создать представления XML объектов (маршалинг) и объектные представления XML (немаршалинг).

Насколько XML-схема затронута, у Вас есть два варианта:

  • Генерируют классы Java от XSD
  • , Генерируют XSD от Ваших классов Java

существуют также некоторые более простые библиотеки сериализации XML как XStream, Систематизатор или XMLBeans, который мог бы быть альтернативами.

9
ответ дан Fabian Steeg 24 November 2019 в 04:10
поделиться

JAXB является большим, если необходимо кодировать к некоторой внешней спецификации XML, определенной как XML-схема (xsd).

, Например, у Вас есть торговое приложение, и необходимо сообщить об отраслях Uber Хромое Торговое Приложение для создания отчетов , и они дали Вам ultra.xsd для продолжения. Используйте $JAVA_HOME/bin/xjc компилятор для превращения XML в набор классов Java (например, UltraTrade).

Тогда можно просто записать простое адаптер слой, чтобы преобразовать торговые объекты в UltraTrades и использовать JAXB для маршалинга данных через к Ультракорпорации Очень легче, чем бездельничание преобразованию отраслей в их формат XML.

то, Где все это ломается, - когда Ультракорпорация на самом деле не повиновалась их собственной спецификации и торговле price, который они имеют вниз, поскольку xsd:float должен на самом деле быть выражен как double!

8
ответ дан oxbow_lakes 24 November 2019 в 04:10
поделиться

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

Ненавижу сутенерство, но я только что завела блог, и это буквально первое, о чем я писал!

Посмотрите здесь:

http://arthur.gonigberg.com/2010/04/21/getting-started-with-jaxb/

19
ответ дан 24 November 2019 в 04:10
поделиться
Другие вопросы по тегам:

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