2009-05-16 6 views
5

XML 형식의 파일 (루트 시작 및 끝 태그와 루트의 자식으로 구성됨)이 있습니다. 자식의 텍스트 요소는 앰퍼샌드 기호 &을 포함합니다. XML에서는 문서가 유효하도록이 기호를 사용할 수 없으며 Java 및 XML 구문 분석기에서 DOM API를 사용하여 파일을 처리하려고하면 구문 분석 오류가 발생합니다. 따라서 &을 &으로 바꿨고 파일을 성공적으로 처리했습니다. 다른 일반 텍스트 파일의 텍스트 요소 값을 추출해야했습니다.XML 파일의 특수 문자 - DOM API를 사용한 처리

새로 만든 텍스트 파일을 열었을 때 &이 표시 될 것으로 예상되었지만 대신 &이 발생했습니다. 왜 이런거야? 확장자가없는 텍스트 파일에 텍스트를 저장했습니다 (XML 형식의 원본 파일에도 .xml 확장명이 없음). 파일을 열어도 관계없이 새 파일의 텍스트에 &이 있습니다. txt 또는 XML 파일 (XML 편집기의 일부 옵션). 정확히 어떻게됩니까? Java (?)는 &을 &으로 자동 변환합니까? 아니면 기본 인코딩이 있습니까? 글쎄, &은 &을 의미하며, "보이지 않는"자동 변환이 있다고 가정합니다. 그러나 이것이 언제 어떻게 발생하는지 혼란 스럽습니다.

이 XML 형식으로 내 "negative.review"파일은 다음과 같습니다 :

<review> 
<review_text> 
I will not wear it as it is too big &amp; looks funny on me. 
</review_text> 
</review> 

이 내입니다 저는 여기에 자바 원본 파일을 처리 한 후 내가받을 내 원래 파일 추출 된 파일의 예입니다 추출 된 파일 "negative_1"나를 위해

I will not wear it as it is too big & looks funny on me. 

(모든 변환/교체하지 않고) 그대로 원래의 데이터를 가지고하는 것이 중요하다, 그래서 내가 추출 된 파일 "negative_1"변환을 처리 할 필요가 있다고 생각 뒤로 &amp; ~ &. 보시다시피, 나는 이것을 할 필요가없는 것 같습니다. 그러나 나는 이해하지 않는 이유 :(.

사전에 감사합니다!

+1

"루트 시작 태그와 종료 태그, 루트 태그의 자식으로 구성됩니다." 바로 XML의 정의입니다 (루트 요소는 하나뿐입니다). – PhiLho

+0

http://stackoverflow.com/questions/4341145/how-to-deal-with-special-characters-in-urls-inside-xml – sandeepKumar

답변

11

이유는 간단하다. XML 파일 정말 포함하는 "&" 문자

그것은 단지 다르게 표현된다 (즉, 그것은이다 "탈출") 실제때문이다.에 XML 파일이 있습니다. XML 1.0 사양의 관련 섹션 인 "2.4 Character Data and Markup"을 읽어보십시오. 몇 줄 밖에 없지만 문제를 아주 잘 설명합니다.

XML은 데이터 표현입니다 (!). 텍스트 파일로 생각하지 마십시오. 예 :

문자열 "17 < 20"을 XML 파일에 저장하려고합니다. 처음에는 "<"이 여는 태그 괄호로 예약되어 있기 때문에 그럴 수 없습니다.그래서 이것은 잘못된 것입니다 :

<xml>17 < 20</xml> 

솔루션 : 당신은 파일의 유효성 유지의 수단에 대한 특수/예약 문자에 이스케이프 문자를 사용 : 모든 실제적인 목적을 위해

<xml>17 &lt; 20</xml> 

을 당신이 당신의 사후 처리에 실제 "&"을 볼 이유

{ 
    "xml": "17 < 20" 
} 

이것은 : 위의 코드는 (JSON 표현이 시간) 다음과 같은 데이터가 포함되어 있습니다. 그것은 똑같은 방법으로 도망 쳤지 만, 이라는 의미 인은 항상 똑같이 머물렀다.

위의 예는 또한 "&"을 특수하게 처리해야하는 이유를 설명합니다.이 자체는 XML 이스케이프 메커니즘의 일부입니다. 그것은 "&lt;"에서와 같이 이스케이프 시퀀스의 시작을 표시합니다. 그러므로 반드시 피해야합니다 (마치 "&amp;").

+0

평소와 같이 멋진 답변! +1 – Cerebrus

2

모든 XML 파서가 암시 적으로 개체를 변환합니다 같은 구문 분석하는 과정의 일환으로 해당 문자에 &amp;, &lt;, &gt;, 등 파일