Заставить JacksonXML десериализовать необработанный XML как String - PullRequest
0 голосов
/ 28 августа 2018

У меня есть строка запроса XML в виде текстового содержимого, но Джексон идентифицирует ее как теги XML. Я пытался использовать JacksonXMLText, но это не помогает.

<Reference>
  <Request><?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34; ?><Quote 
  sess=&#34;JAKE_OSCAR_EU&#34; language=&#34;ENG&#34; Country=&#34;US&#34;> 
  </Quote> 
  </Request>
</Reference>

Это исключает меня

com.ctc.wstx.exc.WstxParsingException: Illegal processing instruction target ("xml"); xml (case insensitive) is reserved by the specs.

1 Ответ

0 голосов
/ 28 августа 2018

Я думаю, что вам нужно написать десериализатор клиента, читающий ту часть дерева, которую вы хотите прочитать Raw. Вот один пример реализации:

@JsonSerialize(using = RawObjectSerializer.class)
@JsonDeserialize(using = RawObjectDeserializer.class)
public class RawObject {

    public final String value;

    public RawObject(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }
}

открытый класс RawObjectDeserializer расширяет StdDeserializer {

public RawObjectDeserializer() {
    super(RawObject.class);
}

    @Override
    public RawObject deserialize(JsonParser parser, DeserializationContext context) throws IOException {
        return new RawObject(parser.getCodec().readTree(parser).toString());
    }
}

https://dolzhenko.me/blog/2017-08-13-raw-jackson

...