Как читать и писать элементы XML «как есть» с помощью JAXB? - PullRequest
3 голосов
/ 28 ноября 2011

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

Допустим, мои документы структурированы так:

<root a="1" b="2" c="3">
<header a="1" b="2" c="3">
<info/>
<more info/>
</header>
<body>lots of nested elements in here</body>
</root>

Я хотел бы обработать пару атрибутов из корневого элемента и дочерних элементов и перенести их в новый документ с другой структурой. Проблема в том, что мне нужно, чтобы содержимое body не было затронуто в моем новом документе.

Есть ли способ (при демаршировании / маршалинге) взять содержимое элемента "как есть"?

Ответы [ 2 ]

2 голосов
/ 28 ноября 2011

Возможно, части вашего XML будут разбиты на части в DOM-объектах общего назначения, а не в сгенерированных JAXB классах.Взгляните на эту ссылку и на эту .

Этот пример предназначен для генерации ваших классов Java из схемы W3C с использованием встроенных пользовательских привязок.Вы можете иметь пользовательские привязки в отдельном файле и использовать их в XJC при генерации классов Java.

Естественно, если вы сами кодируете классы, то же самое может быть достигнуто с помощью соответствующих аннотаций.

1 голос
/ 28 ноября 2011

Вы можете использовать аннотацию @XmlAnyElement, чтобы сохранить части XML в качестве узлов DOM. Вы также можете использовать DomHandler, чтобы сохранить фрагмент XML в другом формате, например, String.

Для получения дополнительной информации

...