패턴이 일정하고 간단한 포맷을 가진 XML을 파싱할 일이 생겼는데
JAXP를 사용하려고 했지만 너무 복잡하다. 그래서 괜찮은 방법이 없을까 찾아 보다가
digester를 사용하면 xml파일을 아주 재밌게 파싱할 수 있다는걸 알았다.
xml을 읽어서 java beans에 매핑해준다.
http://wiki.apache.org/commons/Digester
http://wiki.apache.org/commons/Digester/FAQ
[xml]
<?xml version="1.0" encoding="UTF-8"?>
<list>
<item>20091110</item>
<item>20091109</item>
<item>20091108</item>
<item>20091107</item>
<item>20091106</item>
<item>20091105</item>
<item>20091104</item>
</list>
[java source]
public static List<String> parseDateList(String xmlUrl) {
URL url = null;
try {
url = new URL(xmlUrl);
} catch (MalformedURLException e) {
log.error(e, e);
}
Digester digester = new Digester();
digester.setValidating(false);
digester.addObjectCreate("list", ArrayList.class);
digester.addCallMethod("list/item", "add", 1);
digester.addCallParam("list/item", 0);
List<String> dateList = null;
try {
dateList = (List<String>) digester.parse(url.openStream());
} catch (IOException e) {
log.error(e, e);
} catch (SAXException e) {
log.error(e, e);
}
return dateList;
}