열 형식 XML을 사용하는 SQL Server 데이터베이스 테이블에 일부 XML을 삽입하려고합니다.이스케이프 된 잘못된 문자가 포함되어있을 때 XML을 SQL Server에 삽입하는 방법
대부분의 경우 잘 돌아 갔지만 한 사용자가 16 진수 값 3 인 문자로 XML을 제출했으며 SQL Server에서 "16 진수 값 0x03, 잘못된 문자입니다."오류가 발생했습니다.
삽입을하기 전에 유효하지 않은 XML 문자를 확인하고 제거하고, 유효하지 않은 XML 문자를 regex 또는 유사한 것을 사용하여 대체 할 수있는 방법을 제안하는 다양한 기사가 있습니다.
그러나 문제는 사용자가 잘못된 문자 (예 : "")를 사용하여 XML 문서를 제출했음을 발견했기 때문에 내가 찾은 방법 중 아무 것도이를 감지하지 못합니다. 이것은 이전에 오류가 감지되지 않은 이유이기도합니다. SQL 데이터베이스에 문제가 발생하는 경우에만 삽입됩니다.
이스케이프 처리 된 모든 잘못된 XML 문자를 확인하는 함수를 작성한 사람이 있습니까? 위의 문자가 또는 & # x00000003; 또는 다른 많은 방법으로 작성되었을 수 있으므로이를 모두 잡기가 매우 어렵습니다.
미리 도움을 주셔서 감사합니다.
주, 나의 시도에 캐스팅 대상으로 정화 문자열을 삽입 임시 VARCHAR (최대) 변수 또는 테이블 컬럼으로 XML을 가져 오기를 시도하고 잘못된 문자를 제거하는
REPLACE
를 사용할 수 있습니다 위에 실패한 이스케이프 된 문자에 대해 이야기하기 : 나는 말하기를 의미 : 앰퍼샌드 해시 x 3; – Pete