>  기사  >  백엔드 개발  >  여러 XML 문제를 테스트한 사례에 대한 자세한 소개

여러 XML 문제를 테스트한 사례에 대한 자세한 소개

黄舟
黄舟원래의
2017-03-22 16:30:421965검색

SQL Server를 사용하다 보면 xml 매개변수를 다루는 것은 불가피합니다. xml은 대부분 우리 프로그램에 편리함을 가져다 주지만, 변수 할당이 실패할 때도 있습니다. (물론 자신의 xml이 xml spy와 같은 소프트웨어 검사를 통과하지 못한다면 이는 이 측면의 범위가 아닙니다~)

오늘 공유된 예제는 매우 간단합니다. 몇 가지 예제만 테스트해 보세요.

DECLARE @x XML  
 
 
SELECT @x =
&#39;<a>1</a>&#39;
 
SELECT @x =
&#39;<?xml version="1.0" encoding="utf-8"?>
<a>1</a>
&#39;
 
SELECT @x =
N&#39;<?xml version="1.0" encoding="utf-8"?>
<a>1</a>
&#39;
 
SELECT @x =
&#39;<?xml version="1.0" encoding="utf-8"?>
<a>一个人</a>
&#39;
 
SELECT @x =
&#39;<?xml version="1.0" encoding="GBK"?>
<a>单身狗汪</a>

예제 1:

이것은 우리가 일반적으로 가장 많이 보는 예이며, 부담 없이 컴파일할 수 있습니다. 변수 할당을 통과한 다음 쿼리, 파싱, 원하는 대로~

예2:

컴파일도 통과한 부분이 오해를 불러일으킬 가능성이 가장 높은 것 같습니다. 항상 SQL Server 내부 할당이

<?xml version="1.0" encoding="utf-8"?>

와 같은 헤더를 지원하지 않는다고 생각했기 때문에 일반적으로 코더에게 이러한 오류가 발생하면 헤더를 제거하면 된다고 말합니다(정말 괜찮겠지만 그 이유는 틀렸습니다(⊙ ﹏⊙)b). 실제로 XML 유형 자체는 지원되지만 저장 프로시저를 호출하거나 문에 매개 변수를 할당하는 것은 애플리케이션 시나리오의 문제일 뿐입니다. SQL Server에서는 이 책임을 지지 않겠다고 했습니다

예제 3:

이 예를 컴파일하는 데 문제가 있으며 컴파일러에서

메시지 9402, 레벨 16, status 1 , Line 8
XML 분석: Line 1, 문자 38, 인코딩 전환 불가

다만, 예시 3과 예시 2의 차이점은 예시 3의 할당은 유니코드 인코딩을 사용한 반면, 예시는 2는 그렇지 않아서 예시 3에서는 바로 무릎을 꿇었습니다 ╮(╯_╰)╭. 그래서 우리가 흔히 발견하는 데이터베이스 매개변수 전송 오류는 이 방법을 사용했기 때문에 속은 셈이다_(:з」∠)_. 따라서 지원되지 않는 것이 아니라 호출 방법에 문제가 있다는 것입니다.

예 4:

메시지 9420, 레벨 16, 상태 1, 9행
XML 분석: 2행, 문자 5. 잘못된 xml 문자

야~ 또 오류가 떴네요~ 이번에는 잘못된 xml 문자입니다. 인코딩이 utf-8이라 중국어를 지원하지 않는 것 같습니다. 그래서 가끔 이런 디테일을 신경쓰지 않으면 정말.../(ㄒoㄒ)/~~

예 5:

이번에는 무사히 편집이 끝났습니다. 내부 인코딩이 GBK 인코딩으로 변경되었습니다. 중국어를 지원할 수 있습니다. 물론 컴파일에는 전혀 문제가 없습니다.

다른 예를 추가하는

SELECT @x =
&#39;<?xml version="1.0" encoding="GBK"?>
<a>繁体字 龍 _(:з」∠)_</a>

도 괜찮습니다. 일부 중국어 번체 문자도 GBK 글꼴 라이브러리에서 지원되며 일반적으로 이 문제로 어려움을 겪을 필요가 없습니다. 특별한 기호가 없으면 뭐라고 말하기 어렵네요 ㅎㅎ

마지막으로 인코딩="utf-8"과 인코딩="UTF-8"은 동일하며 여기서는 대소문자 구분이 없습니다. 주목은 여기...

위 내용은 여러 XML 문제를 테스트한 사례에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.