site_link1 | |
---|---|
site_link2 | |
site_link3 |
이글은 키값과 밸류값을 한 라인을 통합해서 <key>value</key>방식으로 Map을 XML로 변환할 때 적용하는 방법에 대해서 기술합니다.
XML 의 모양을 변환하여 다시 저장합니다
1. MapConverter 재정의
public class CustomMapConverter implements Converter {
private static final Logger LOG = Logger.getLogger(CustomMapConverter.class);
@Override
public boolean canConvert(Class type) {
return type.equals(HashMap.class) || type.equals(Hashtable.class)
|| type.getName().equals("java.util.LinkedHashMap")
|| type.getName().equals("sun.font.AttributeMap");
}
@Override
@SuppressWarnings("unchecked")
public void marshal(Object src, HierarchicalStreamWriter writer, MarshallingContext context) {
Map<String, Object> map = null;
try {
map = (Map<String, Object>) src;
for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) {
Map.Entry<String, Object> entry = (Map.Entry<String, Object>) iterator.next();
writer.startNode(entry.getKey().toString());
writer.setValue(entry.getValue().toString());
writer.endNode();
}
} catch (Exception e) {
e.printStackTrace();
LOG.error(e);
}
}
@Override
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
// Map map = (Map) createCollection(context.getRequiredType());
// populateMap(reader, context, map);
Map<String, Object> map = new HashMap<String, Object>();
return map;
}
}
2. 사용 샘플
- xstream.registerConverter(new CustomMapConverter());
3. 실행 결과
원본 XML
<map>
<entry>
<string>result</string>
<string>0</string>
<string>username</string>
<string>pepsi@paran.com</string>
<string>icon</string>
<string>position=30,30&;name=워드 뷰</string>
</entry>
</map>
변환 결과 XML
<node>
<result>0</result>
<username>pepsi@paran.com</username>
<icon>position=30,30&;name=워드 뷰</icon>
</node>
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
27 | [Bootstrap] 부트스트랩이란? (feat ChatGPT) | 황제낙엽 | 2023.02.23 | 0 |
26 | XpressEngine1 의 공식홈페이지와 GitHub저장소 | 황제낙엽 | 2020.11.19 | 15 |
25 | XE 서버 이전 계획 | 황제낙엽 | 2018.08.29 | 80 |
24 | XpressEngine(XE) 에서 엮인글 스팸 방지법 | 황제낙엽 | 2017.08.25 | 461 |
23 | JSTL과 Velocity를 활용한 UI 레이어 구현 방법 | 황제낙엽 | 2007.01.30 | 339 |
22 | 벨로시티에서 loop 작성 | 황제낙엽 | 2005.12.13 | 85 |
21 | Map <-> XML (2) | 황제낙엽 | 2011.04.29 | 99 |
» | XML -> (Map) XML | 황제낙엽 | 2011.04.29 | 61 |
19 | Custom XStream Converter | 황제낙엽 | 2011.04.26 | 212 |
18 | XStream 배우기 : 변환기(Converter) 배우기 | 황제낙엽 | 2011.04.20 | 298 |
17 | XStream 배우기 : 별칭(Alias) 배우기 | 황제낙엽 | 2011.04.20 | 340 |
16 | XStream 배우기 : 2분만에 배우는 XStream | 황제낙엽 | 2011.04.20 | 40 |
15 | Tiles2 간단한 예제 맛보기 | 황제낙엽 | 2009.10.20 | 38 |
14 | Spirng MVC 와 Tiles 2 연동하기(응용) | 황제낙엽 | 2009.10.13 | 31 |
13 | Spirng MVC 와 Tiles 2 연동하기(기본) | 황제낙엽 | 2009.10.13 | 28 |
12 | 검색엔진 루씬 Lucene... Analyzer의 선택 | 황제낙엽 | 2007.11.27 | 102 |
11 | Sitemesh와 JSP 파일 이름 | 황제낙엽 | 2007.08.16 | 27 |
10 | SiteMesh를 이용하여 웹 페이지의 레이아웃을 처리 | 황제낙엽 | 2007.08.13 | 67 |
9 | Cactus를이용한효율적인테스트전략 | 황제낙엽 | 2007.01.30 | 33 |
8 | Xdoclet 사용하기 2부 | 황제낙엽 | 2006.10.04 | 40 |