hml 파일에 이미지 바인딩 하기
BINDATALIST에 bindata 등록
hml에 이미지를 등록하기 위해서 위와 같이 BINDATALIST 태그를 찾아서 등록을 해 주어야 합니다
binData에 값이 결국 바인딩될 id값이 됩니다.
<BINDATALIST Count="2">
<BINITEM BinData="1" Format="png" Type="Embedding"/>
<BINITEM BinData="2" Format="png" Type="Embedding"/>
</BINDATALIST>
bindata 등록
위에서 list에 등록 하셨다면 파일 가장 하단에 다음과 같은 태그를 작성해서 myTag로 위치를 지정한다음 이미지파일을 base64로 인코딩해서 replace시켜주면 끝입니다.
<BINDATA Encoding="Base64" Id="2" myTag="image"></BINDATA>
list에 등록해 놓은 "2" 와 같은 값
java 코드
자세한 코드는 위 링크에 있습니다.
해당 글에서는 이미지 바인딩하는 부분만 작성돼 있습니다.
String utf8String = Base64.getEncoder().encodeToString(imageBytes);
NodeList imageBind = root.getElementsByTagName("BINDATA");
for (int i = 0; i < imageBind.getLength(); i++) {
Node node = imageBind.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element ele = (Element)node;
if (!ele.getAttribute("myTag").equals("")) {
if ("image".equals(ele.getAttribute("myTag"))) {
ele.setTextContent(utf8String);
}
}
}
}
주의 사항
Size 속성을 xml태그에 포함시키거나 setAttreibute로 설정하면 안됩니다.
제가 이글을 정리하게 된 이유인데 ele.setTextContent(utf8String);를 할때 처음에 size값도 설정해 줘야하는줄 알고 ele.setAttreibute로 size값을 직접 지정해 주었었습니다. 하지만! 그렇게 하면 이미지가 정상적으로 출력안돼서 한참을 해매었으니 저같은 분이 생기지 않았으면 좋겠습니다..
'JAVA,객체지향' 카테고리의 다른 글
java StringUtils.isBlank (0) | 2023.09.06 |
---|---|
java map안에 map 찾기 (0) | 2023.09.06 |
java Enum , 열거형 비교 (0) | 2023.09.06 |
java 리플렉션/ 객체 내부 필드값 순회하기 (0) | 2023.09.06 |
JAVA /기본 가비지 컬렉터 튜닝 (0) | 2023.09.06 |