Invalid XML characters: JsonMappingException: Illegal character ((CTRL-CHAR, code #))

CountryGirl·2024년 3월 4일
0

TS

목록 보기
1/1

JsonMappingException: Illegal character ((CTRL-CHAR, code 8))
JsonMappingException: Illegal character ((CTRL-CHAR, code 11))

외부 자료를 수집하면서 같은 오류가 발생했다.

XML 데이터를 JSON으로 매핑할 때 발생한 문제였다.
XML에 유효하지 않은 문자가 포함되어있거나 제어 문자 (Control Characters)가 JSON으로 변환되는 과정에서 발생한다.


UtilText > convertXmlToDto (XmlMapper)

public static <T> T convertXmlToDto(String xml, Class<T> dto) throws Exception {
    XmlMapper xmlMapper = new XmlMapper();
    return xmlMapper.readValue(xml, dto);
}

외부수집 자료가 XML이었기 때문에 XmlMapper를 사용했고,
중간에 mapping을 할 수 없는 문자가 포함되어 계속해서 문제가 발생했던 것 같다.

cleanInvalidXmlChar

public static String cleanInvalidXmlChar(String xml) {
    String xml10pattern = "[^"
            + "\u0009\r\n"
            + "\u0020-\uD7FF"
            + "\uE000-\uFFFD"
            + "\ud800\udc00-\udbff\udfff"
            + "]";
    return xml.replaceAll(xml10pattern, "");
}

위와 같은 method를 만들어주었다.
XML 문자열에서 유효하지 않은 XML문자를 제거하는 method 이다.


완벽한 방법은 아니지만 일단 해당 문제를 해결하였다.

✅ REFERENCE

[stackoverflow]: removing invalid XML characters from a string in java
[stackoverflow]: Illegal character - CTRL-CHAR

profile
💻🌾시골소녀의 엉망징창 개발 성장일지🌾💻 (2023.05.23 ~)

0개의 댓글