본문 바로가기
Framework/Mybatis

org.xml.sax.SAXParseException; 요소 콘텐츠는 올바른 형식의 문자 데이터 또는 마크업으로 구성되어야 합니다.

by 나비와꽃기린 2016. 5. 26.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Caused by: org.xml.sax.SAXParseException; 요소 콘텐츠는 올바른 형식의 문자 데이터 또는 마크업으로 구성되어야 합니다.

 

SELECT A, B, C

FROM TEST-TABLE

WHERE A <> B;

 

à mybatis 를 사용하던 도중, xml의 쿼리에서

   <> 와 같은 꺽쇠키가 있었기 때문이다.

   xml 태그와 부등호가 같기 때문에 해당 xml을 파싱하던 도중 이를 혼동해 Error를 뿜게되는것

   <> , <=, >= 등 꺽쇠 관련 문자에서 모두 Error를 뿜는다!

 

à 해결방법

1. 꺽쇠 부분만 CDATA로 감싸기

<![CDATA[ <> ]]>

2. 쿼리 전체를 CDATA로 감싸기

 

예시 쿼리는 <>가 하나만 들어가 있지만, 아시다시피 쿼리를 짜시게 되면

꺽쇠가 여러 개 들어가는 경우가 있죠?

그럴때마다 꺽쇠부분마다 CDATA로 감싸주게 되면

나중에 쿼리동작을 위해 복사해서 쓰실 때, 하나하나 지워줘야 하는 단점이 있습니다.

따라서 쿼리 전체를 감싸주는 방식으로 사용하는 것이 가장 편리합니다.

 

<![CDATA[

SELECT A, B

FROM TEST-TABLE

WHERE A <> B and C >=2;

 ]]>