[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
댓글을 사용할 수 없습니다.