[Java] XML 파싱
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 |
댓글
이 글 공유하기
다른 글
-
[Java] Map을 순회하는 방법
[Java] Map을 순회하는 방법
2020.07.03 -
[Java] 테스트를 위한 환경 구성
[Java] 테스트를 위한 환경 구성
2020.05.28 -
[Java] JVM (Java Virture Machine)
[Java] JVM (Java Virture Machine)
2020.04.19 -
[Java] try-with-resources로 쉽게 자원해제하기
[Java] try-with-resources로 쉽게 자원해제하기
2020.04.17