2013-04-29 5 views
0

Castor XMLDiff를 사용하여 2 개의 XML 파일 간의 차이점을 찾습니다. 지정된 URL 위치에있는 두 개의 XML 문서를 비교합니다. 내 XML 파일은 모두 런타임에 생성되며 String 형식입니다. 내 질문은 XML 파일로 문자열을 변환 할 수있는 방법, 그래서 인수로 파일 위치를 전달할 수 있습니다.문자열을 XML 파일로 변환

<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Header><MessageID>7dc1a6b9-5e84-4ee8-b801-816f4eccbe26</MessageID><MessageDate>..... 

방법 공공 XMLDiff에 (최종 문자열 파일 1, 최종 문자열 파일 2가) 2 개 파일 위치가 필요합니다

나는 다음과 같은 형식의 String 있습니다. 파일 위치 대신 위에서 언급 한 문자열이 있습니다. XML 문서 형식으로이 문자열을 유지하는 가장 좋은 방법은 무엇입니까? 그래서 위치를 가져 와서 XMLDiff에 전달할 수 있습니까?

+5

'어떻게 String을 XML 파일로 변환 할 수 있습니까? '- Erm ... 텍스트 파일을 열고 문자열을 출력합니까? –

+0

변환 방법이 명확하지 않습니다. 당신은 당신이 기대하는 "예전"과 "이후"의 예를 게시 할 수 있습니까? – cahen

+0

가능한 해결책은 http://stackoverflow.com/questions/1053467/how-do-i-save-a-string-to-a-text-file-using-java를 참조하십시오. –

답변

0

문자열에 XML 데이터가 포함되어 있으면 디스크에 쓰기 만하면됩니다. 나는 FileUtils.write()과 같은 방법을 commons-io에서 추천 할 것이다. 예를 들어

: 물론

String xml = ... 
FileUtils.write(new File("path/to/output"), xml, "UTF-8"); 

, 어떤 인코딩으로 "UTF-8" 교체는 당신의 XML 헤더에 광고됩니다.

0

당신이 자바 7을 사용하는 경우, 당신은 단지 새로운 IO API를 사용을 통해 매우 짧은 코드가 필요 여전히 제 3 자 libs와와 필요가 없습니다 : 이와 함께

Path path = Files.createTempFile("prefix", null); 
Files.write(path, yourXMLString.getBytes(Charset.forName("UTF-8")) , StandardOpenOption.CREATE, StandardOpenOption.WRITE); 
String pathToTheFile = path.toString(); 

당신은 단순히 두 개의 임시 파일을 만들 수 있습니다 XML 문자열로 채운 다음 라이브러리 함수에 경로 문자열을 제공하십시오.

+0

감사합니다. 해결책을 좋아했다. – One