2014-07-21 7 views
0

XML을 수정하는 데 JDom 2.0.5를 사용하고 있습니다. 또한 올바르게 수정되었는지 확인하는 Junit 테스트 케이스가 있습니다. 그것은 입력 XML, 테스트 (변환 XML) 및 새로운 XML (결과)에 대한 방법을 가지고 있습니다. 나중에 출력을 최종 결과 여야하는 파일과 비교합니다.끝 태그의 공백 제거 jdom

FileUtils.contentEquals(newXml, modelXml); 

그러나 모든 종료 태그는 JDom에 의해 자동으로 수정되므로 항상 false입니다. 수정할 필요가 없기 때문에 모델을 변경할 수 없습니다.

Input: <properties/> 
Output: <properties /> --> should be as input:: <properties/> 

어떻게 JDOM이 태그를 변경하는 것을 방지 할 수 있습니다?

SAXBuilder builder = new SAXBuilder(); 
Document doc = (Document) builder.build(xmlFile); 

// Add, remove some elements ... 

XMLOutputter xmlOutput = new XMLOutputter(); 
xmlOutput.setFormat(Format.getPrettyFormat()); 
xmlOutput.output(doc, new FileWriter(newXml, false)); 

답변

0

"변경"은 실제로 실제로 유효합니다. 여분의 공간은 XML의 의미와 아무런 차이가 없습니다.

(또는 다른 말로하면, JDom 데이터 구조는 소스 태그에 존재하지 않는 공백 문자의 존재 여부를 인코딩하지 않기 때문에 JDom은 출력 XML 형식을 지정할 때 입력 XML의 공백을 재현 할 수 없습니다 .)


진짜 문제는 기대이 잘못된 것입니다. XML 문서를 문자 시퀀스 인 것처럼 안정적으로 비교할 수는 없습니다.

자바에서 XML을 비교하기 위해 다양한 올바른 방법이 Q & 읽기 :