Programming/JAVA / / 2024. 7. 8. 11:02

XML(Extensible Markup Language)에서 특수문자 사용방법

반응형

XML(Extensible Markup Language)에서 특수 문자는 데이터의 일부로 사용될 수 있지만, XML의 구문과 충돌할 수 있는 문자들입니다. 따라서 이러한 문자들은 특별한 방식으로 인코딩되어야 합니다. 이러한 문자는 일반적으로 엔티티 참조(entity references)를 사용하여 나타냅니다.

 

 

주요 특수 제어 문자와 그 엔티티 참조

 

XML에서 특수 문자를 나타내기 위한 엔티티 참조 목록은 다음과 같습니다:

  1. 앰퍼샌드 (&): &
  2. 작은 따옴표 ('): '
  3. 큰 따옴표 ("): "
  4. 부등호 (<): &lt;
  5. 부등호 (>): &gt;

 

예제

 

다음은 XML에서 특수 문자를 사용하는 예제입니다

 

원본 데이터

 

인코딩된 XML 데이터

 

 

특수 제어 문자 처리 예제 (Java)

 

다음은 Java에서 XML 데이터에 특수 문자를 포함시키는 방법을 보여주는 예제 코드입니다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
 
public class XmlSpecialCharacterExample {
    public static void main(String[] args) {
        try {
            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
 
            // 루트 엘리먼트
            Document doc = docBuilder.newDocument();
            Element rootElement = doc.createElement("note");
            doc.appendChild(rootElement);
 
            // to 엘리먼트
            Element to = doc.createElement("to");
            to.appendChild(doc.createTextNode("User & Friends"));
            rootElement.appendChild(to);
 
            // from 엘리먼트
            Element from = doc.createElement("from");
            from.appendChild(doc.createTextNode("Me"));
            rootElement.appendChild(from);
 
            // message 엘리먼트
            Element message = doc.createElement("message");
            message.appendChild(doc.createTextNode("It's a great day! \"Enjoy\" it."));
            rootElement.appendChild(message);
 
            // XML 출력
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            DOMSource source = new DOMSource(doc);
            StreamResult result = new StreamResult(System.out);
            transformer.transform(source, result);
 
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
cs

 

주요 포인트
  • 앰퍼샌드 (&): XML 파서는 앰퍼샌드를 시작으로 엔티티 참조 또는 캐릭터 참조를 예상합니다. 예를 들어, &amp;는 앰퍼샌드 문자를 나타냅니다.
  • **작은 따옴표 (')**와 큰 따옴표 ("): XML 속성 값 내에 포함될 때는 엔티티 참조로 인코딩되어야 합니다.
  • 부등호 (<): 태그의 시작을 나타내기 때문에, 내용 텍스트 내에서는 &lt;로 인코딩해야 합니다.
  • 부등호 (>): 보통 > 문자는 인코딩할 필요가 없지만, CDATA 섹션을 끝내는 문자열 ]]>의 일부로 사용될 경우 인코딩이 필요할 수 있습니다.

XML 데이터를 생성하거나 처리할 때, 이러한 특수 제어 문자를 올바르게 인코딩하고 디코딩하는 것이 중요합니다. 이는 데이터의 무결성을 유지하고 XML 구문 오류를 방지하는 데 필수적입니다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유