Как отправить данные Jaxb XmlAttribute без Java двойных кавычек - PullRequest
0 голосов
/ 11 мая 2018

Итак, у меня возникает следующая проблема при попытке создать XML из класса Java с использованием jaxb. Мой первый тег должен быть таким:

<Entity Type=‘test-instance’>
Some xml
</Entity>

Мне нужно, чтобы в первом теге было что-то написано, а в закрывающем - только Entity.

Я создал claas и добавил тег @XMLRootElement с именем = Entity, и с его помощью у меня есть правильный последний тег. Если я использую все выражение, которое у меня есть, как в первом, так и в закрывающем теге, который мне не помогает.

Я добавил строковую переменную с @XMLAttribute, чтобы я мог добавить что-то еще после Entity. Проблема в том, что если я инициализирую переменную значением, я получу двойные кавычки String. Например

@XMLAttribute(name=“Type”)
String x = “test-instance”;

Когда я построю это, он будет читать:

<Entity Type=“test-instance”>

, с двойными кавычками и мне нужны только одинарные кавычки.

Если использовать полное описание, которое мне нужно, в атрибуте xml, например:

@XMLAttribute(name=“Type=‘test-instance’”)
String x;

Это будет работать нормально, но если переменная не инициализирована, она ничего не добавит, и если напишет что-то вроде String x = «»; Тогда я получу:

<Entity Type=‘test-instance’=“”>

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

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

Или другой вариант для установки XMLAttribute, даже если строка не инициализирована. Я видел в XMLElement что-то вроде «требуемый», но он не доступен для XMLAttribute, и я не совсем уверен, что он делает то, что мне нужно это к.

Любая помощь будет с благодарностью.

Спасибо

1 Ответ

0 голосов
/ 12 мая 2018

В приложениях XML принцип должен быть:

(a) Получающие приложения не должны заботиться о незначительных лексических подробностях написания XML. (Лучший способ добиться этого - использовать респектабельный синтаксический анализатор XML для чтения XML.)

(b) При написании приложений должно быть свободно использовать любые лексические соглашения, которые они сочтут удобными. (Это означает, что вы можете использовать любую респектабельную библиотеку сериализации для написания XML.)

Выбор одинарных или двойных кавычек для атрибутов является одной из этих незначительных лексических деталей.

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

Вы не объяснили, ПОЧЕМУ вам нужно генерировать одинарные кавычки. Возможно, XML используется приложением, которое не следует правилу (а). В этом случае вы должны это исправить! Если вы не можете это исправить, то вы значительно увеличиваете свои расходы, на самом деле, совсем мало смысла в использовании XML.

Иногда, когда мы задаем этот вопрос, мы получаем ответ «потому что клиент настаивает на том, чтобы это было так». Наша работа как профессионалов заключается в том, чтобы обучать наших клиентов: они оплачивают счета, и безответственно тратить свои деньги на плохой инжиниринг, даже если это то, что они сказали, что хотели.

...