자바언어를 사용하다보면 다양한 데이터 구조를 사용하기도 합니다.
그중 태그와 속성이 있는 간단한 텍스트 기반 구문으로 사람이 읽고 쓰고 이해하기 쉽고, 플랫폼 독립적이어서
모든 프로그래밍 언어나 플랫폼에 사용 할 수 있는 XML 정의와 사용법에 대해서 알려드리겠습니다.
XML 이란?
XML(eXtensible Markup Language)은 구조화된 형식으로 데이터를 저장하고 전송하도록 설계된 마크업 언어입니다. 간단하고 유연하며 플랫폼에 독립적인 텍스트 기반 형식으로 구조화된 데이터를 사람이 읽을 수 있는 형태로 표현하는 데 널리 사용됩니다. XML의 몇 가지 주요 측면은 다음과 같습니다.
마크업 언어: HTML과 마찬가지로 XML은 태그를 사용하여 데이터의 구조와 의미를 정의합니다. 그러나 웹 브라우저에서 콘텐츠를 표시하는 데 주로 사용되는 HTML과 달리 XML은 데이터를 표현하고 설명하기 위해 설계되었습니다.
계층 구조: XML 문서는 요소, 속성 및 텍스트 내용으로 구성된 계층 구조를 가지며 요소는 다른 요소를 포함하여 트리와 같은 구조를 형성할 수 있습니다.
요소: 요소는 XML 문서의 구성 요소이며 시작 태그와 끝 태그 내에 포함됩니다. 각 요소는 요소에 대한 추가 정보를 제공하는 속성을 가질 수 있습니다.
속성: 속성은 요소에 대한 추가 정보를 제공하며 시작 태그 내에 지정됩니다. 각 속성은 이름-값 쌍으로 구성됩니다.
텍스트 내용: 요소에 텍스트 내용이 포함될 수 있으며, 이는 요소와 관련된 데이터를 나타냅니다.
Well-Formeness: XML 문서는 단일 루트 요소, 적절한 중첩 요소 및 올바른 형식의 태그를 포함하여 Well-Formeness 규칙을 준수해야 합니다.
확장성: XML은 확장성이 있어 사용자가 자신만의 사용자 정의 태그와 문서 구조를 정의할 수 있습니다. 이러한 유연성으로 인해 XML은 다양한 응용 프로그램과 사용 사례에 적합합니다.
네임스페이스: XML 네임스페이스를 사용하면 동일한 이름을 가지더라도 요소와 속성을 고유하게 식별할 수 있습니다. 이것은 다른 소스의 XML 문서를 결합할 때 특히 유용합니다.
XML은 웹 개발, 데이터 교환, 구성 파일, 문서 저장 등 다양한 영역에서 일반적으로 사용됩니다. 프로그래밍 언어와 기술에 의해 널리 지원되며 XML 문서를 구문 분석, 생성 및 조작할 수 있는 많은 도구와 라이브러리가 있습니다. 그 인기에도 불구하고 XML은 특히 단순성과 효율성이 우선시되는 웹 개발에서 특정 사용 사례에서 JSON과 같은 더 가벼운 형식으로 대체되었습니다. 그러나 XML은 다른 많은 맥락에서 구조화된 데이터를 표현하는 데 유용한 도구로 남아 있습니다.
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
public class CreateXMLExample {
public static void main(String[] args) {
try {
// Create a new DocumentBuilderFactory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
// Create a new Document
Document document = builder.newDocument();
// Create the root element
Element rootElement = document.createElement("students");
document.appendChild(rootElement);
// Create student elements
Element student1 = createStudentElement(document, "John", "Doe", "25");
rootElement.appendChild(student1);
Element student2 = createStudentElement(document, "Jane", "Smith", "23");
rootElement.appendChild(student2);
// Write the DOM document to an XML file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(System.out); // Print to console for this example
transformer.transform(source, result);
System.out.println("XML file created successfully!");
} catch (Exception e) {
e.printStackTrace();
}
}
private static Element createStudentElement(Document document, String firstName, String lastName, String age) {
// Create student element
Element student = document.createElement("student");
// Create and append name elements
Element firstNameElement = document.createElement("firstName");
firstNameElement.appendChild(document.createTextNode(firstName));
student.appendChild(firstNameElement);
Element lastNameElement = document.createElement("lastName");
lastNameElement.appendChild(document.createTextNode(lastName));
student.appendChild(lastNameElement);
// Create and append age element
Element ageElement = document.createElement("age");
ageElement.appendChild(document.createTextNode(age));
student.appendChild(ageElement);
return student;
}
}
|
cs |
먼저 DocumentBuilderFactory 및 DocumentBuilder를 작성하여 새 XML 문서를 작성합니다.
createElement()와 appendChild()를 사용하여 students 이라는 루트 요소를 만듭니다.
각 학생 요소의 생성을 캡슐화하는 createStudentElement() 메서드를 사용하여 학생 요소를 만듭니다.
createStudentElement() 내부에서는 각 학생(예: 이름, 성, 나이)에 대한 하위 요소를 생성하여 학생 요소에 추가합니다.
마지막으로 트랜스포머를 사용하여 DOM 문서를 XML 파일 또는 기타 출력 스트림에 씁니다(이 경우 단순화를 위해 콘솔에 인쇄합니다).
이 코드를 실행하면 학생 데이터의 XML 표현이 출력됩니다
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<students>
<student>
<firstName>John</firstName>
<lastName>Doe</lastName>
<age>25</age>
</student>
<student>
<firstName>Jane</firstName>
<lastName>Smith</lastName>
<age>23</age>
</student>
</students>
|
cs |
java xml 읽기
1
2
3
4
5
6
7
8
9
10
11
12
|
<library>
<book>
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<isbn>9780545010221</isbn>
</book>
<book>
<title lang="en">The Hobbit</title>
<author>J.R.R. Tolkien</author>
<isbn>9780547928225</isbn>
</book>
</library>
|
cs |
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
|
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class XMLExample {
public static void main(String[] args) {
try {
// Load XML file
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("books.xml");
// Get the root element
Element library = document.getDocumentElement();
// Get all 'book' elements
NodeList bookNodes = library.getElementsByTagName("book");
// Iterate over 'book' elements
for (int i = 0; i < bookNodes.getLength(); i++) {
Element book = (Element) bookNodes.item(i);
String title = book.getElementsByTagName("title").item(0).getTextContent();
String author = book.getElementsByTagName("author").item(0).getTextContent();
String isbn = book.getElementsByTagName("isbn").item(0).getTextContent();
// Print book details
System.out.println("Title: " + title);
System.out.println("Author: " + author);
System.out.println("ISBN: " + isbn);
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
|
cs |
감사합니다.