Добавить атрибут пространства имен модульным способом - PullRequest
1 голос
/ 02 апреля 2012

для xml:

<foo xmlns="http://ns.com"
     xmlns:ext="http://ext.com"
     attr="xxx"
     ext:bar="yyy">
</foo>

Как создать класс Foo?В частности, я хотел бы иметь возможность каким-либо образом отделить атрибут 'ext', чтобы он был не непосредственно в Foo, а в другом классе и безопасным для типов способом (поэтому не XmlAnyAttribute).

Что я оптимально желаю, так это:

class Foo {
  Ext ext;
}

class Ext {
  String bar;
}

1 Ответ

0 голосов
/ 02 апреля 2012

Вы можете сопоставить поле / свойство POJO с помощью @XmlAttribute, если у объекта ссылки есть только одно сопоставленное поле / свойство с @XmlValue.

Foo

class Foo {
    @XmlAttribute(namespace="http://www.ext.com")
    Ext ext
}

Ext

class Ext {
    @XmlValue
    String bar;
}

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

ОБНОВЛЕНИЕ

Примечание: Я EclipseLink JAXB (MOXy) лидер и член JAXB 2 (JSR-222) экспертная группа.

Что если я хочу сопоставить несколько атрибутов?

Вы можете использовать расширение @XmlPath в MOXy для этого варианта использования:

Foo

Использование @XmlPath(".") означает, что вы хотите, чтобы целевой объект был представлен на том же уровнев XML-документе в качестве исходного объекта.

class Foo {
    @XmlPath(".")
    Ext ext
}

Ext

class Ext {
    @XmlAttribute
    String foo;

    @XmlAttribute
    String bar;
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...