1. XML 파싱


JSON이 편리하고 많이 사용되는게 사실이지만, XML 또한 많이 사용되는 것도 사실입니다.

그렇기 때문에, 데이터를 XML로 만드는 것과 XML을 파싱해서 데이터를 이용하는 것 둘 다 할 줄 알아야합니다.

XML 파싱이라는 작업이 워낙에 일반적이다보니 Java는 XML 파서를 내장하고 있습니다.

2. 내장 라이브러리를 사용한 XML 파싱 예제


아래와 같은 구조의 XML 파일이 있다고하겠습니다.

<person sex="w">
<name>Alsa</name>
<age>25</age>
</person>
<person sex="m">
<name>Bob</name>
<age>28</age>
</person

 

위의 XML 파일에서 <person> 태그의 을 가져오고 싶다면 어떻게 해야 할까요? 🤔

public class DemoXmlParser {
public void getXmlData(File xmlFile) {
// 1. 빌더 팩토리 생성.
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
// 2. 빌더 팩토리로부터 빌더 생성
DocumentBuilder builder = builderFactory.newDocumentBuilder();
// 3. 빌더를 통해 XML 문서를 파싱해서 Document 객체로 가져온다.
Document document = builder.parse(xmlFile);
// 문서 구조 안정화 ?
document.getDocumentElement().normalize();
// XML 데이터 중 <person> 태그의 내용을 가져온다.
NodeList personTagList = document.getElementByTagName("person");
// <person> 태그 리스트를 하나씩 돌면서 값들을 가져온다.
for (int i = 0; i < personTagList.getLength(); ++i) {
// 속성 값 가져오기.
String name = personTagList.item(i).getAttributes().getNamedItem("sex").getNodeValue();
// <person> 태그의 하위 노드들을 가져온다. ( 여기서 노드는 태그를 의미한다. )
NodeList childNodes = personTagList.item(i).getChildNodes();
for (int j = 0; j < childNodes.getLength(); ++j) {
if ("name".equals(childNodes.item(j).getNodeName()) {
// do somthing...
}
if ("age".equals(childNodes.item(j).getNodeName()) {
// do somthing...
}
}
}
}
}

 

위의 코드를 보면, 파싱할 XML 파일을 Document 객체에 담아옵니다. 이제 이 Document 객체를 가지고 파싱 작업을 진행하는데요,

위에선 Document#getElementByTagName 메서드를 이용해 <person> 태그를 리스트의 형태로 들고왔습니다.

가져온 태그 목록을 NodeList 객체에 담았는데 하나의 XML 태그가 하나의 Node 객체에 매핑되기 때문입니다.

 

 

 

 

'Programming > Java' 카테고리의 다른 글

[Java] Map을 순회하는 방법  (0) 2020.07.03
[Java] 테스트를 위한 환경 구성  (0) 2020.05.28
[Java] JVM (Java Virture Machine)  (0) 2020.04.19
[Java] try-with-resources로 쉽게 자원해제하기  (0) 2020.04.17
[Java] NIO  (0) 2020.04.17

댓글

댓글을 사용할 수 없습니다.