2011-10-07 11 views
0

나는 긴 게시물에 대해 사과하지만이 문제는 쉽게 설명되지 않는다.jdom과 ssis 사이의 이상한 상호 작용

최근 jdom을 사용하여 XML을 구문 분석하고 조작하는 동료 용 SSIS 패키지를 재구성하기 위해 Java 조각을 작성했습니다. 프로그램이 작동했지만 결과 파일이 손상되었습니다. jdom이 작성한 파일에서 재현되지 않은 원본 파일의 비정상적인 대부분 인쇄되지 않는 문자로 충돌을 추적 할 수있었습니다.

이 캐릭터에 대해 이상한 점은 모든 에디터에 표시되지 않는다는 것입니다. 예를 들어, Oxygen XML 편집기는이를 보지 못합니다.

<DTS:Property DTS:Name="TaskContact">Execute SQL Task; Microsoft Corporation; Microsoft 
SQL Server v9; © 2004 Microsoft Corporation; All Rights  
Reserved;http://www.microsoft.com/sql/support/default.asp;1</DTS:Property> 

과 같은 요소의 변환 된 버전 : 그러나, 메모장, 원래의 저작권은 다음과 같이 나타납니다

<DTS:Property DTS:Name="TaskContact">Execute SQL Task; Microsoft Corporation; Microsoft 
SQL Server v9; © 2004 Microsoft Corporation; All Rights 
Reserved;http://www.microsoft.com/sql/support/default.asp;1</DTS:Property> 

(문제의 문자는 저작권 기호 전에 Â입니다)

 -> ""및 © -> "(c)"와 같이 문제가되는 패키지에서 글로벌 대체품을 실행하면 문제가 해결되지만 수정되지 않은 요소를 넣을 때 문제가 다시 발생한다는 것을 알게되었습니다 수정 된 패키지에 넣으십시오. 이제는 r에 무엇이 있는지 확실하지 않습니다. 문제의 oot.

다시 말해서, 긴 게시물에 대해 유감 스럽지만 세부 사항은 빠뜨리고 싶지 않았습니다. 모든 통찰이나 제안은 크게 감사 할 것입니다. 나는 꽤 잘한다.

내 동료가이 파일을로드하려는 시도에서 오류 메시지를 보내 게 될 것이므로 유용하다고 생각하면 게시 할 수 있습니다.

+0

jdom을 통해 SSIS에서 재구성 할 대상은 무엇입니까? – billinkc

+0

DB 팀의 정리를 돕기 위해 데이터웨어 하우스 용 dtsx 패키지를 다시 모으고 있습니다. 구체적으로, 일부 요소 이름을 정규화하고 프로그래밍으로 결정할 수있는 누락 요소를 삽입합니다. –

+0

아, [PacMan] (http://pacman.codeplex.com/)을 살펴볼 것을 제안하려고했지만 이미 객체 모델에 익숙한 것처럼 들립니다. – billinkc

답변

0

문제의 근본 원인은 하나의 인코딩으로 작성하고 다른 인코딩을 읽는 것입니다. 이 질문에 대한 내 대답을보십시오. £ becomes £ Why? XML ISO encoding issue? 파운드 기호 £를 저작권 기호 (유니 코드 U + 00A9)로 바꾸십시오. 잘하면 인코딩 믹스가 발생하는 장소를 찾을 수 있습니다.

+0

고마워요. 내가 검색하는 동안 그 대답을 발견했다. 그리고 그것이 나를 분류하지 못했지만, 그것은 내가 더 나은 장소를 볼 수있게 도와 주었다. 그동안 FileReader를 만들고 getEncoding() 메서드를 호출했습니다. "Cp1252"라고 말합니다. 내 XMLFormatter의 출력 인코딩을 설정하면 문자가 제대로 나오지만 JDOM은 결과 파일을 읽을 수 없습니다. 두 단계 프로세스가 있었기 때문에 이것이 문제였습니다. 나는 여러 단계를 결합했으며 그것이 효과가 있었는지에 대한 보고서를 기대하고 결과를 게시 할 것입니다. –

+0

@JonKiparsky. FileReader를 사용하는 것이 문제 일 수 있습니다. 독자를위한 인코딩은 내용의 "실제"인코딩과 일치하지 않을 수 있으며 이는이 경우 증거에 의해 뒷받침됩니다. 문자 스트림 대신 바이트 스트림을 사용하는 것이 좋습니다. –

+0

팁 주셔서 감사. 나는 그것을 줄 것이다. –