JAXBв Java HashMap - PullRequest
       6

JAXBв Java HashMap

0 голосов
/ 05 марта 2019

У меня есть простой XML-код, подобный этому:

<ContainerElement>
  <MapEntry key="key1" value="value1"/>
  <MapEntry key="key2" value="value2"/>
  <MapEntry key="key3" value="value3"/>
  <OtherNestetElements/>
  <OtherNestetElements/>
  <OtherNestetElements/>
</ContainerElement>

, где key и value - простые строки.

<xs:element name="MapEntry">
    <xs:complexType>
      <xs:attribute name="key" type="xs:string" use="required" />
      <xs:attribute name="value" type="xs:string" use="required" />
    </xs:complexType>
</xs:element>
<xs:element name="ContainerElement">
    <xs:complexType>      
      <xs:sequence>
        <xs:element ref="MapEntry"   minOccurs="0"  maxOccurs="unbounded"/>
        <xs:element ref="OtherNestetElements" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
</xs:element>

Какой самый простой способ преобразовать элементы MapEntry в карту Java (Hash-) с помощью JaxB?

Если бы он поддерживал более простое решение, я бы изменил определение MapEntry на следующее:

<xs:element name="MapEntry">
    <xs:extension base="as:string">
        <xs:attribute name="key" type="xs:string" use="required" />
    </xs:extension>
</xs:element>

<MapEntry key="key1">value1</MapEntry>
<MapEntry key="key2">value2</MapEntry>
<MapEntry key="key3">value3</MapEntry>

PS1
Я прочитал это: http://todayguesswhat.blogspot.co.uk/2012/09/jaxb-xsd-to-java-maphashmap-example.html) Но пример выглядит довольно утомленным, имея ключи и значения в различных элементах. Поэтому я надеюсь, что при таком более четком подходе существует более простое решение.

PS2
Я бы хотел избежать очевидного решения: перебрать список MapEntry в коде моего приложения и вместо этого получить карту (Hash) непосредственно из JaxB.

...