Jackson XML: разобрать теги name / value в карту - PullRequest
0 голосов
/ 18 марта 2019

У меня есть XML-файл в качестве входных данных для моей службы Springboot REST, XML выглядит примерно так:

<someelement id="foo">
  <property name="somekey" value="somevalue"></property>
  <property name="somekey2" value="somevalue2"></property>
  <property name="somekey3" value="somevalue3"></property>
  <someelement id="blah">
  </someelement>
</someelement>

Я могу проанализировать это со следующими классами, после сообщения Джексону мои списки не переносятся:

@XmlRootElement(name = "someelement")
@XmlAccessorType(XmlAccessType.FIELD)
@Data
public class SomeElement {
  @JacksonXmlProperty(isAttribute = true, localName = "id")
  private String id;

  @JacksonXmlProperty(localName = "property")
  private List<Property> properties;

  @JacksonXmlProperty(localName = "someelement")
  private List<SomeElement> children;
}

@XmlRootElement(name = "Property")
@XmlAccessorType(XmlAccessType.FIELD)
@Data
public class Property {
  @JacksonXmlProperty(isAttribute = true, localName = "name")
  private String name;

  @JacksonXmlProperty(isAttribute = true, localName = "value")
  private String value;
}

@Data просто генерирует все сеттеры / геттеры.Поэтому, очевидно, я получаю список свойств, который не совсем то, что я хочу.Я хотел бы иметь Map<String, String>, где анализируются имена и значения свойств.

@XmlRootElement(name = "someelement")
@XmlAccessorType(XmlAccessType.FIELD)
@Data
public class SomeElement {
  @JacksonXmlProperty(isAttribute = true, localName = "id")
  private String id;

  // some annotation here that takes all child property tags
  // and parses the name/value pairs into this map
  private Map<String, String> properties;

  @JacksonXmlProperty(localName = "someelement")
  private List<SomeElement> children;
}

Как бы я занялся чем-то подобным?Должен ли я написать свой собственный десериализатор для этого?Просто кажется, что, возможно, есть простой способ, который я пропускаю, поскольку на бумаге это не кажется сложным / необычным.

...