Вы можете использовать регулярное выражение:
str = str.replace(/\s*$/,"");
Он говорит, заменить все пробелы в конце строки пустой строкой.
Разбивка:
\s*
: любое количество пробелов $
: конец строки Подробнее о регулярных выражениях :
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
Чтобы связать вместе, что другие уже говорили или намекали на правила, правила, с помощью которых JAXB XJC решает, следует ли поставить @xmlRootelement
аннотацию на сгенерированном классе без тривиала ( см. Статья ).
@XMLROTELEMETEMENT
существует, потому что время выполнения JAXB требует определенной информации, чтобы Marshal / Mondarshal данный объект, в частности, имя элемента XML и пространства имен. Вы не можете просто передать какой-либо старый объект в Marshaller. @xmlROutelement
предоставляет эту информацию.
Аннотация - это просто удобство, однако - JAXB не требует этого. Альтернатива является использование Jaxbelement
Объекты обертки, которые обеспечивают ту же информацию, что и @xmlrootelement
, но в виде объекта, а не аннотации.
Тем не менее, JAXBBELEMENT
объекты неловко построят, поскольку вам нужно знать имя элемента XML и пространство имен, которые обычно не используют бизнес-логику.
К счастью, когда XJC генерирует модель классов, она также генерирует класс под названием ObjectFactory
. Это частично там для обратной совместимости с JAXB V1, но именно также там, как место для XJC, чтобы поставить сгенерированные заводские методы, которые создают JAXBELEMET
. Он обрабатывает имя XML и пространство имен для вас, поэтому вам не нужно беспокоиться об этом. Вам просто нужно посмотреть через ObjectFactory
методы (и для большой схемы, их могут быть сотни), чтобы найти тот, который вам нужен.
У нас тоже не работает. Но мы нашли широко цитируемую статью, которая добавляет НЕКОТОРЫЕ предыстории ... Я сделаю ссылку на нее здесь для следующего человека: http://weblogs.java.net/blog/kohsuke/archive/ 2006/03 / why_does_jaxb_p.html