JAXB упорядочивает CDATA с помощью плагина Maven

Это моя общая проблема: я хочу, чтобы все было автоматизировано настолько, насколько это возможно.

Это моя конкретная проблема: я хочу маршалировать/демаршалировать CDATA. Я знаю, что могу указать свой собственный адаптер как здесь. Для процесса сборки я использую Maven и его maven-jaxb2-plugin. Есть ли какой-нибудь вариант, как аннотировать элементы в .xsd, чтобы они автоматически аннотировались моим пользовательским адаптером? Я действительно не хочу вручную менять их после каждой сборки.

Любые другие способы решения моей проблемы более чем приветствуются. :)

EDIT: я столкнулся с подпроблемой, и она описана там: Привязка JAXB - невозможно выполнить эту настройку преобразования.


person Martin D    schedule 06.08.2014    source источник
comment
Если у вас есть проблемы с конфигурацией, добавьте несколько примеров, чтобы помочь вам лучше :), возможно, мой ответ неполный.   -  person Xstian    schedule 06.08.2014
comment
Термин CDATA означает неразобранные символьные данные и используется для обозначения особого метода представления содержимого XML-элемента: Раздел CDATA начинается с ‹![CDATA[ и заканчивается на ]]› (w3schools.com)   -  person laune    schedule 07.08.2014
comment
вы решили эту проблему? если да, то как вы ее решили?   -  person Xstian    schedule 13.10.2014
comment
@Xstian - stackoverflow.com/questions/25183594/   -  person Martin D    schedule 13.10.2014


Ответы (1)


попробуйте эту конфигурацию

<bindings version="2.0" xmlns="http://java.sun.com/xml/ns/jaxb"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    xmlns:annox="http://annox.dev.java.net"
    xmlns:namespace="http://jaxb2-commons.dev.java.net/namespace-prefix">
    <bindings schemaLocation="yourXSD.xsd">

            <bindings node="//xsd:complexType[@name='Certificate']//xsd:sequence//xsd:element[@name='certificate']">
                <xjc:javaType name="java.security.cert.X509Certificate" adapter="adapters.X509CertificateAdapter" />
            </bindings>
            <bindings node="//xsd:complexType[@name='User']//xsd:sequence//xsd:element[@name='certificate']">
                <xjc:javaType name="java.security.cert.X509Certificate" adapter="adapters.X509CertificateAdapter" />
            </bindings>

    </bindings>
</bindings>

я решил эту проблему по этой ссылке

эта конфигурация работает нормально, если это xmltype, например xs:string, xs:date и т. д.

Попробуйте эту конфигурацию, чтобы решить проблему с помощью XmlJavaTypeAdapter. .

person Xstian    schedule 06.08.2014
comment
Большое спасибо Xstian! Похоже, что это сработает, но у меня все еще есть большая проблема. В моей схеме я объявил свой собственный комплексный тип. Когда я хочу связать его, плагин сообщает мне, что ...undefined simple type... - person Martin D; 07.08.2014
comment
Можете ли вы добавить некоторую конфигурацию или образец? , чтобы помочь вам лучше :) - person Xstian; 07.08.2014
comment
Извините, я отредактировал свой комментарий сразу после того, как написал его, чтобы указать источник, но он почему-то не сохранился. :) article-content.xsd, bindings.xsd - person Martin D; 07.08.2014
comment
и как вопрос: stackoverflow.com/questions/25183594/ - person Martin D; 07.08.2014