블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
04-26 02:23
 

달력

« » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
 

최근에 올라온 글

최근에 달린 댓글


JAXB를 통해 XML을 생성하게 되면 아래와 같은 헤더가 자동적으로 생성됩니다.

<?xml version="1.0" encoding="EUC-KR" standalone="yes"?>

위의 헤더 외에 DTD를 지정해야 한다면, 그리고 standalone="yes" 속성을 제거해야 할 경우가 생겨서 수 많은 검색 끝에 해결책을 찾아냈습니다.


Marshaller marshaller = JAXBContext.newInstance(XXX.class).createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "EUC-KR");
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);

...

StringWriter writer = new StringWriter();
writer.append("<?xml version=\"1.0\" encoding=\"EUC-KR\"?>\r\n");
marshaller.get().marshal(xxx, writer);

JAXB_FRAGMENT 를 true 로 설정하면 상단의 헤더를 제외하게 됩니다. 마샬링을 하게 되는 Writer 객체에 사용할 헤더를 append 시키는 것으로 처리할 수 있습니다.


마샬러에 프로퍼티를 설정하면 된다는 글도 있었는데, 잘 안되는 것 같아 위의 방식을 사용하였습니다.

Posted by 자수씨
, |


XML 엘리먼트 내에 CDATA 블록이 아닌 곳에서 &nbsp; 와 같은 것들이 사용되면 어김없이 오류를 뱉어냅니다.

XML 페이지를 표시할 수 없습니다.

XSL 스타일시트를 사용하여 XML 입력을 볼 수 없습니다. 오류를 수정한 다음 새로고침 단추를 누르거나 나중에 다시 시도하십시오.


문제를 해결하기 위해 백방으로 찾아보았지만... xsl 에서 무언가를 하라는 말 밖에...

결국 구글신과의 1박 2일 동침의 결과로 찾아내었습니다.




위의 기존 dtd 를 아래와 같이 수정합니다.


일단은 잘 나오는 것 같고... 문서마다 저렇게 넣을 수 없으니 다른 방식을 확인해 봐야 겠습니다.

슝슝~~


[참고자료]
http://bugs.php.net/bug.php?id=15092 :: [20 Jan 2004 2:51pm UTC] somebody at wolfmarkt dot de








Posted by 자수씨
, |

xml 데이터를 가지고 처리하는 작업을 최근에 하다보니 encoding 을 알아야 할 일이 생겼습니다.
JAXB 를 가지고 marshalling/unmarshalling 을 하기 때문에 라이브러리를 통해서 encoding 을 확인할 방법은 없고...

그래서 예전에 한참 재밌게 가지고 놀던 정규식을 이용해서 아래와 같이 만들어 보았습니다.



getXMLEncodingType() 메소드의 인자로 xml 데이터를 넘겨주면 encoding 을 반환하게 됩니다.


Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백