다음 섹션에서 변경 사항에 대한 자세한 내용을 확인할 수 있습니다.
처리 지침이 포함된 XML 내용 구문 분석하기
다음은 PARSE_XML 함수를 사용하여 처리 지침에 물음표가 있는 XML 내용을 구문 분석하는 예입니다.
SELECT PARSE_XML('<?PITarget PIContent ??><mytag />') AS mytag;
- 변경 전에 반환되었습니다.:
100100 (22P02): Error parsing XML: prematurely terminated XML document in processing instructions, pos 33
- 변경 후에 반환되었습니다.:
+-----------------+
| MYTAG |
|-----------------|
| <mytag></mytag> |
+-----------------+
꺾쇠 괄호 또는 아포스트로피가 포함된 XML 내용 구문 분석하기
다음은 PARSE_XML 함수를 사용하여 XML 특성 값에 꺾쇠 괄호와 아포스트로피를 포함하는 XML 내용을 구문 분석하는 예입니다. 변경 후 XML 특성 값의 아포스트로피와 꺾쇠 괄호는 반환 값과 전송된 XML에서 올바르게 이스케이프 처리됩니다.
SELECT PARSE_XML('<mytag myattr="<>\'"/>') AS mytag;
- 변경 전에 반환되었습니다.:
+------------------------------+
| MYTAG |
|------------------------------|
| <mytag myattr="<>'"></mytag> |
+------------------------------+
- 변경 후에 반환되었습니다.:
+-----------------------------------------+
| MYTAG |
|-----------------------------------------|
| <mytag myattr="<>'"></mytag> |
+-----------------------------------------+
사용자 정의 엔터티가 포함된 XML 내용 구문 분석하기
다음 예에서는 PARSE_XML 함수를 사용하여 사용자 정의 엔터티가 포함된 XML 내용을 구문 분석합니다.
SELECT PARSE_XML('<!DOCTYPE doc [<!ENTITY placeholder "some text">]><doc>&placeholder;</doc>')
AS placeholder;
- 변경 전에 반환되었습니다.:
100100 (22P02): Error parsing XML: unknown entity &placeholder;, pos 68
- 변경 후에 반환되었습니다.:
+-------------------------------------------------------------+
| PLACEHOLDER |
|-------------------------------------------------------------|
| <!DOCTYPE doc [<!ENTITY placeholder "some |
| text">]><doc>some text</doc> |
+-------------------------------------------------------------+
공백을 보존하는 XML 내용 구문 분석하기
공백 보존에 관한 XML 사양 과 Snowflake의 동작이 일치하도록 이 변경이 이루어졌습니다.
다음은 PARSE_XML 함수를 사용하여 XML 내용을 구문 분석하고 xsl:space="preserve" 특성을 지정하는 예입니다.
SELECT PARSE_XML('<mytag xsl:space="preserve"> my content </mytag>')
AS space_preserve;
- 변경 전에 반환되었습니다.:
+--------------------------------------------------+
| SPACE_PRESERVE |
|--------------------------------------------------|
| <mytag xsl:space="preserve"> my content </mytag> |
+--------------------------------------------------+
- 변경 후에 반환되었습니다.:
+--------------------------------------------------+
| SPACE_PRESERVE |
|--------------------------------------------------|
| <mytag xsl:space="preserve">my content</mytag> |
+--------------------------------------------------+
다음은 PARSE_XML 함수를 사용하여 XML 내용을 구문 분석하고 xml:space="preserve" 특성을 지정하는 예입니다.
SELECT PARSE_XML('<mytag xml:space="preserve"> my content </mytag>')
AS space_preserve;
- 변경 전에 반환되었습니다.:
+--------------------------------------------------+
| SPACE_PRESERVE |
|--------------------------------------------------|
| <mytag xml:space="preserve">my content</mytag> |
+--------------------------------------------------+
- 변경 후에 반환되었습니다.:
+--------------------------------------------------+
| SPACE_PRESERVE |
|--------------------------------------------------|
| <mytag xml:space="preserve"> my content </mytag> |
+--------------------------------------------------+
공백을 보존하는 XML 내용 로딩하기
다음은 COPY INTO <table> 명령을 사용하여 테이블에 데이터를 로딩하는 예입니다. PRESERVE_SPACE 매개 변수는 공백을 보존하기 위해 TRUE 로 설정됩니다.
COPY INTO mytable
FROM @my_xml_stage
FILE_FORMAT = (TYPE = 'XML' PRESERVE_SPACE = TRUE);
- 변경 전 로딩된 콘텐츠::
+--------------------------------------------------+
| SPACE_PRESERVE |
|--------------------------------------------------|
| <mytag xsl:space="preserve"> my content </mytag> |
+--------------------------------------------------+
- 변경 후 로딩된 콘텐츠::
+--------------------------------------------------+
| SPACE_PRESERVE |
|--------------------------------------------------|
| <mytag xml:space="preserve"> my content </mytag> |
+--------------------------------------------------+
변경 전후의 내용은 공백을 유지하지만 특성은 xsl:space="preserve" 에서 xml:space="preserve" 로 변경됩니다.
참조: 1862