2010-10-18 2 views
4

У нас есть настольное приложение java, которое использует JAXB для генерации XML-файла, который затем считывается .Net-приложением и хранится в базе данных SQL-сервера.Сгенерированный XML-код XML со специальными символами в .Net/SQL

Мы находим, что возврат каретки в Java и не происходит как возврат каретки/линии в .Net/SQL.

Есть ли способ сказать Java или Jaxb включить как возврат каретки, так и линию. Есть ли способ получить .Net, чтобы вставить их. Будет ли CDATA-блок помогать?

Спасибо.

ответ

0

Мы закончили установку их на стороне .net.

Пропускаем каждую строку через функцию, которая заменяет vblf на vbcrlf. Кажется, работает до сих пор.

1

Как именно вы создаете файл XML? Передаются ли данные через PrintStream в любой момент? Если это так, то, возможно, это тот момент, когда введены системные разделители строк.

А где именно проблематичные строки перевода? Внутри текстового элемента? Или между тегами XML? Если это первый, то вам следует сосредоточиться на коде, который создает текст, если последний, то это библиотека генерации XML.

+0

Итак, мы имеем Java/Swing UI (текст ящики), привязанные к объектам с использованием рамки jgoodies. Мы используем Jaxb для «сохранения» объектов в XML-файле. XML-файл затем импортируется в .net, используя xsd для набора объектов. Эти объекты, в свою очередь, вручную сохраняются в базе данных sql. Ни в коем случае, о котором я знаю, мы проходим через PrintStream. –

0

Вы могли бы решить эту проблему, имея JAXB не добавить отступы:

Marshaller marshaller = jaxbContext.createMarshaller(); 
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false); // DEFAULT 

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

JAXB.marshal(object, System.out); 

Вы также можете попробовать другую реализацию JAXB. Я возглавляю реализацию MOXy JAXB. Когда наша реализация форматирует документ, используется следующее:

System.getProperty("line.separator"); 
+0

мы попробовали это, и это не помогло. любые другие идеи? Нам слишком поздно использовать MOXy JAXB. Благодарю. –

+1

Являются ли специальные символы связанными с контентом или форматированием? Если они связаны с предоставленным пользователем контентом, вам необходимо их самостоятельно преобразовать, если они связаны с форматированием, и вы не включили (или отключили) эту функцию JAXB, а затем другой этап обеспечивает форматирование. –

+0

они связаны с предоставленным пользователем контентом –

0

На самом деле данная реакция Блеза Doughan была довольно хорошо (Myabe опечатка?)

Marshaller marshaller = jaxbContext.createMarshaller(); 
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // Blaise wrote 'false' here 

Для меня это сохраняет Newlines ...

Смежные вопросы