반응형
오늘은 자바 XML 파싱에 대해서 알아보려고 한다.
사실 요즘 XML은 잘 사용하지 않는 편이고 JSON을 많이 사용하지만 XML도 아직까지 많이 남아 있는 느낌이다.
우리 회사에도 새롭게 개발되는 내용은 JSON을 사용하지만 기존에 데이터 통신은 XML을 사용하고 있다.
이번 프로젝트 때 XML을 JSON으로 바꾸면 좋았지만 다른 쪽에서 그만큼 개발이 많이 들어가야 한다고 해서
XML로 진행을 하였다.
XML은 JSON 처럼 쉽게 파싱을 해주는 라이브러리가 존재하진 않았다.
그래서 문서를 파싱하여 Node별로 나누어 사용하게 된다.
EX) XML 데이터 예시
<?xml version="1.0" encoding="UTF-8"?> <ROOT> <Header BillNo="0001" TotalPrice="6000"> <Detail GoodsCd="00001" GoodsNm="아메리카노" Price="1000"/> <Detail GoodsCd="00002" GoodsNm="카페라떼" Price="2000"/> <Detail GoodsCd="00003" GoodsNm="초코라떼" Price="3000"/> </Header> </ROOT> |
EX) 자바 XML 파싱 예시
public String fnGetAttribute(String sXmlData, String sNodeName, String sAttribute) throws Exception{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
Document doc;
String rAttribute = "";
try {
// XML 문서 파싱
InputSource is = new InputSource(new StringReader(sXmlData));
builder = factory.newDocumentBuilder();
doc = builder.parse(is);
Element root = doc.getDocumentElement(); //Get Root Node
NodeList childeren = root.getChildNodes(); // 자식 노드 목록 get
for(int i = 0; i < childeren.getLength(); i++){
Node node = childeren.item(i);
if(node.getNodeType() == Node.ELEMENT_NODE && sNodeName.equals(node.getNodeName())) {
Element ele = (Element)node;
rAttribute = ele.getAttribute(sAttribute);
}
}
} catch (Exception e) {
e.printStackTrace();
throw new Exception();
}
return rAttribute;
}
해당 예시는 XML 파일에서 내가 원하는 값을 가져오고 싶을 때 만든 함수이다.
변수 명 | 변수 설명 | 예시 |
Stirng sXmlData | Xml Data | 위 XML 예시 데이터 |
String sNodeName | 데이터를 가져오고 싶은 노드명 | Header,Detail |
String sAttribute | 데이터를 가져오고 싶은노드의 Attribute | TotalPrice, GoodsNm |
String totalPrice = fnGetAttribute(sXmlData, "Header", "TotalPrice");
sXmlData에 예시 데이터가 들어가 있다는 가정을 한다면 해당 함수를 이렇게 사용할 수 있다.
반응형
'JAVA & KOTLIN' 카테고리의 다른 글
Kotlin - List to Array, Array to List (0) | 2021.11.06 |
---|---|
Spring zip 파일 다운로드 (0) | 2021.06.15 |
JAVA RestTemplate 사용 (0) | 2019.09.18 |
JAVA redis 연결 (0) | 2019.09.17 |
JAVA 형 변환 (0) | 2019.09.17 |