Jackson具有多个属性的XML序列化

时间:2018-01-03 19:49:02

标签: java xml xml-serialization fasterxml

试图找出如何使用具有多个属性(?)以及名称空间或本地的jackson序列化xml有效负载。

我需要有效负载看起来像这样:

<wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs"
    xmlns:ogc="http://www.opengis.net/ogc" xmlns:fade="http://www.bit-sys.com/fade" service="WFS" version="1.1.0" resultType="results" maxFeatures="150001" outputFormat="application/json">
        <wfs:Query srsName="EPSG:4326" typeName="ExampleTypeName">
            <Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">
                ...

我正在创建一个pojo,用于将此有效负载所需的数据映射到正确的位置,但却无法区分namespacelocalName部分。到目前为止,我所拥有的pojo并没有真正产生预期的结果(即使是第一个<GetFeature />部分。

public class MyXmlObject {

  @JacksonXmlRootElement(localName = "wfs", namespace = "wfs")
  class GetFeature {

    @JacksonXmlProperty(isAttribute = true)
    private String wfs = "http://www.opengis.net/wfs";

    @JacksonXmlProperty(isAttribute = true)
    private String ocg = "http://www.opengis.net/ogc";

    @JacksonXmlProperty(isAttribute = true)
    private String fade = "http://www.bit-sys.com/fade";

    @JacksonXmlProperty(isAttribute = true)
    private String service;

    @JacksonXmlRootElement(localName = "wfs")
    public class Query {

      @JacksonXmlProperty(isAttribute = true)
      private String srsName = "exampleSrsName";

      @JacksonXmlProperty(isAttribute = true)
      private String typeName = "exampleTypeName";

    }

  }

}

现在只运行一个简单的测试来查看我的xml有效负载在我工作时的外观如何产生<MyXmlObject />,其中没有任何内容,不太确定我做错了什么。

@Test
public void whenJavaSerializedToXmlStr_thenCorrect()
    throws JsonProcessingException {
  XmlMapper xmlMapper = new XmlMapper();
  xmlMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
  String xml = xmlMapper.writeValueAsString(new MistXmlObject());
  System.out.print(xml);
}

0 个答案:

没有答案