Сериализация строки с экранированными двойными кавычками в XML

#java #jackson

Вопрос:

У меня возникла проблема при попытке сериализовать объект Java в XML с помощью jackson XmlMapper.

Одно из полей содержит строку с экранированными двойными кавычками, например:

String example = "This is a string with "escaped double quotes"";

Когда я передаю объект в XMLmapper (переменные-это объект, содержащий строку примера):

 XmlMapper xmlMapper = new XmlMapper();  String xml = xmlMapper.writeValueAsString(variables);  

это результат, который я получаю:

 some other tags lt;examplegt;This is a string with "escaped double quotes""This is a string with "escaped double quotes""This is a string with "escaped double quotes"lt;/examplegt; some other tags  

Как я могу сериализовать строку с экранированными двойными кавычками в XML для достижения надлежащего результата, т. Е.

 lt;examplegt;This is a string with "escaped double quotes"lt;/examplegt;  

Комментарии:

1. привет и добро пожаловать! 😉 Где вы «получаете результат»? (Извините, не могу воспроизвести: я получаю вывод (от System.out.println(xml); ): lt;SimpleBeangt;lt;examplegt;This is a string with "escaped double quotes"lt;/examplegt;lt;/SimpleBeangt; )

2. @xerx593 я распечатал его в консоли, так же, как и вы.

3. Вы уверены, что сами как-нибудь не пытались сбежать от веревки? (В этом нет необходимости.)

4. @VGR Нет, строка анализируется из полученного JSON, и перед вызовом xmlMapper она выглядит точно так же, как в переменной «пример» в моем вопросе.

Ответ №1:

Затем: «Извините, не могу воспроизвести»!

pom.xml:

 lt;?xml version="1.0" encoding="UTF-8"?gt; lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"gt;  lt;modelVersiongt;4.0.0lt;/modelVersiongt;  lt;groupIdgt;com.examplelt;/groupIdgt;  lt;artifactIdgt;xml-mapperlt;/artifactIdgt;  lt;versiongt;1.0-SNAPSHOTlt;/versiongt;  lt;packaginggt;jarlt;/packaginggt;  lt;dependenciesgt;  lt;dependencygt;  lt;groupIdgt;com.fasterxml.jackson.dataformatlt;/groupIdgt;  lt;artifactIdgt;jackson-dataformat-xmllt;/artifactIdgt;  lt;versiongt;2.13.0lt;/versiongt; lt;!-- tried [2.11.0 - 2.13.0], same result --gt;  lt;/dependencygt;  lt;dependencygt;  lt;groupIdgt;org.projectlomboklt;/groupIdgt;  lt;artifactIdgt;lomboklt;/artifactIdgt;  lt;versiongt;1.18.22lt;/versiongt;  lt;/dependencygt;  lt;/dependenciesgt; lt;/projectgt;  

src/main/java/com/example/xml/mapper/SimpleBean.java:

 package com.example.xml.mapper;  import lombok.Data;  @Data public class SimpleBean {  final String example = "This is a string with "escaped double quotes""; }  

src/main/java/com/example/xml/mapper/Main.java:

 package com.example.xml.mapper;  import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.dataformat.xml.XmlMapper;  public class Main {   public static void main(String[] args) throws JsonProcessingException {  XmlMapper xmlMapper = new XmlMapper();  String xml = xmlMapper.writeValueAsString(new SimpleBean());  System.out.println(xml);  } }  

gt;mvn clean package exec:java -Dexec.mainClass=com.example.xml.mapper.Main (jdk8), печатает:

 ...  --- exec-maven-plugin:3.0.0:exec (default-cli) @ xml-mapper --- lt;SimpleBeangt;lt;examplegt;This is a string with "escaped double quotes"lt;/examplegt;lt;/SimpleBeangt; ------------------------------------------------------------------------ BUILD SUCCESS ------------------------------------------------------------------------ Total time: 1.570 s Finished at: 2021-11-16T13:02:33 01:00 ------------------------------------------------------------------------  

Комментарии:

1. ..также никаких изменений (работает как шарм ;-( ), на «изменяемом» компоненте…