스카리아풀빌라

xml에서 &와 같은 문자 에러시

IT
XML 문서내의 모든 문장들은 파서에 의해 검사된다
그러나 CDATA 섹션안의 문장들은 예외가 된다.



Parsed Data


XML 파서는 보통 문서내의 모든 문장들을 분석한다.

XML element 를 parse 할때 테그 사이의 문자열도 아래예처럼 parse 하게 되는데

<message>This text is also parsed</message>

왜냐하면 XML element 사이에 다른 element 가 속해 있을수도 있기때문이다.
아래 예에서 <name> element 사이에 다른 element 들이 속해있을수 있다.

<name><first>Bill</first><last>Gates</last></name>

그리고 파서는 이것을 sub-element 로 나뉘다.

<name>
   <first>Bill</first>
   <last>Gates</last>
</name>


Escape Characters

XML 문자데이터로 사용할수 없는 문자들은 이를 다른 것으로 바꿔줘야 한다.

아래 예처럼 XML element 안에서 '<' 를 사용한다면 파서는 에러를
발생 시킨다.

<message>if salary < 1000 then</message>

위 문장은 아래처럼 '<' 를 &lt; 로 바꿔줘야한다.

<message>if salary &lt; 1000 then</message>


XML 에서 미리 정의된 5개의 entity reference

&lt; < less than
&gt; > greater than
&amp; & ampersand 
&apos; ' apostrophe
&quot; " quotation mark

entity reference 는 항상 '&' 로 시작해서 ';' 끝난다.

노트: XML 에서 '<' 과 '&' 의 사용은 정대 허용이 안된다.
나머지 3개 문자는 허용은 되나 이를 사용하는것은 좋은 습관은 아니다.


CDATA

CDATA 섹션안의 모든것은 파서를 거치지 않는다.
프로그램 코드에서 종종 사용하는 '<' 나 '&' 문자 뿐아니라
어떤 문자도 사용할수있다

CDATA 섹션은 "<![CDATA[" 로 시작하고 "]]>" 로 끝난다.