2017-09-25 9 views
0

열 형식 XML을 사용하는 SQL Server 데이터베이스 테이블에 일부 XML을 삽입하려고합니다.이스케이프 된 잘못된 문자가 포함되어있을 때 XML을 SQL Server에 삽입하는 방법

대부분의 경우 잘 돌아 갔지만 한 사용자가 16 진수 값 3 인 문자로 XML을 제출했으며 SQL Server에서 "16 진수 값 0x03, 잘못된 문자입니다."오류가 발생했습니다.

삽입을하기 전에 유효하지 않은 XML 문자를 확인하고 제거하고, 유효하지 않은 XML 문자를 regex 또는 유사한 것을 사용하여 대체 할 수있는 방법을 제안하는 다양한 기사가 있습니다.

그러나 문제는 사용자가 잘못된 문자 (예 : "")를 사용하여 XML 문서를 제출했음을 발견했기 때문에 내가 찾은 방법 중 아무 것도이를 감지하지 못합니다. 이것은 이전에 오류가 감지되지 않은 이유이기도합니다. SQL 데이터베이스에 문제가 발생하는 경우에만 삽입됩니다.

이스케이프 처리 된 모든 잘못된 XML 문자를 확인하는 함수를 작성한 사람이 있습니까? 위의 문자가  또는 & # x00000003; 또는 다른 많은 방법으로 작성되었을 수 있으므로이를 모두 잡기가 매우 어렵습니다.

미리 도움을 주셔서 감사합니다.

+0

주, 나의 시도에 캐스팅 대상으로 정화 문자열을 삽입 임시 VARCHAR (최대) 변수 또는 테이블 컬럼으로 XML을 가져 오기를 시도하고 잘못된 문자를 제거하는 REPLACE를 사용할 수 있습니다 위에 실패한 이스케이프 된 문자에 대해 이야기하기 : 나는 말하기를 의미 : 앰퍼샌드 해시 x 3; – Pete

답변