-1
XML 파일로 변환하기 전에 XML 문자열을 이스케이프해야합니다. 나는 이런 식으로 작업을 수행합니다XML 문자열 바꾸는 방법?
자바 코드 :
public static final String[][] XML_ENTITIES = {
{"&","&"},{">",">"},{"<","<","'","'","\"","""}
};
public static String escape(String str){
for(int i=0;i<XML_ENTITIES.length;i++){
String name = XML_ENTITIES[i][0];
String value = XML_ENTITIES[i][1];
int idx = str.indexOf(name);
if(idx > -1){
str = str.replace(name, value);
}
}
return str;
}
그것은 잘 작동하지만 어떤 경우에 실패합니다.
예 :
escape(">>,,a,a<<")
출력 :
>>,,a,a<<
실패 케이스 :
escape("&>,,a,a<<")
출력 :
&amp;>,,a,a<<
xml 문자열에 &
이 포함되어 있으면 문자열에서 &
문자를 이스케이프 처리 할 필요가 없습니다. 만약 내가 unescape
문자열을 탈출하면 잘 작동합니다. 이스케이프 처리없이 어떻게 할 수 있습니까?
당신은'org.apache.commons.lang.StringEscapeUtils.escapeXml()'을 보았습니까? – user1516873
@ user1516873 이것은 답변 가치가 있습니다. –
두 번째 예제가 올바르게 나에게 보이지 않게 보입니다. 부분적으로 이스케이프 된 문자열을 처리하려면 문자열의 이스케이프 처리를 해제 한 다음에 이스케이프 메서드를 이스케이프 처리되지 않은 문자열에 적용하는 것이 좋습니다. –