2012-09-14 1 views
2

나는 공리를 사용하여 XML에서 데이터를 추출합니다.
하지만 XML에서 CTRL-CHAR (예 : â, €, ¢, ",", ™, '등)을 사용하기 때문에 위의 오류가 발생합니다.
위의 오류를 피하기 위해 모든 본문을 사용하여 모든 CTRL-SHAR을 대체 할 수 있습니까?com.ctc.wstx.exc.WstxUnexpectedCharException : 잘못된 문자 ((CTRL-CHAR, 코드 15))

+1

CTLR-CHAR하지만 (몇 가지 예외를 제외하고, 특히 CR, LF 및 탭)는 허용되지 않습니다 U + 0020 아래에 인쇄 할 수없는 제어 문자로, 당신은 나와 한 해당 문자를 참조하지 않습니다 XML 1.0 문서 원본 문서에 이러한 문자가 포함되어 있으면 올바른 형식의 XML이 아닙니다. –

+0

@ Ian : 그래,하지만 예외는 CTRL-CHAR가 그렇지 않다고 말했습니까? 내가 탐지 한 카하라를 하나씩 교체하면 잘 작동합니다. 그러나 나는 이것을 위해 편리하고 견고한 방법이 필요하다. – namalfernandolk

+0

예외로 '코드 15', 즉 U + 000F가 표시됩니다. –

답변

0

현재이 경우 다음과 같은 방법을 사용하고 있습니다. 그러나 나는 이것보다 더 좋은 방법이 있어야한다고 생각한다.

public static String removeNonUtf8CompliantCharacters(final String inString) { 
     if (null == inString) return null; 
     byte[] byteArr = inString.getBytes(); 
     for (int i=0; i < byteArr.length; i++) { 
      byte ch= byteArr[i]; 
      // remove any characters outside the valid UTF-8 range as well as all control characters 
      if (!(ch < 0x00FD && ch > 0x001F) || ch =='&' || ch=='#') { 
       byteArr[i]=' '; 
      } 
     } 
     return new String(byteArr); 
    }