2014-01-24 2 views
1

XML과 XSD 파일이 있습니다. XML 파일은 tomcat/우분투 플랫폼의 Java를 사용하여 생성됩니다.XSD를 기반으로 XML을 "자동 복구"하는 방법은 무엇입니까?

시스템 간의 통합에 사용됩니다. 두 번째 시스템은 XSD를 사용하여 XML을 검증하고 내 XML이 올바르지 않다고 말합니다.

XML 파일을 천천히 수정하고 싶지만 시간 문제가 있습니다. 그들은 빨리 XML보다 XSD에서 올바른 XML을 원합니다.

내 XML과 XSD를 사용할 수있는 도구/알고리즘이 있습니까? 모의 필드를 추가하십시오.

내가 원하는 것 : 아직 정확한 XML이 XSD로 메소드와 XML에 올바르게 전달됩니다.

일부 테스트 프레임 워크는 그렇게 할 수 있어야합니다.

도와주세요.

+0

[XML 스키마를 사용하여 Java에서 XML 수정하기] 가능한 복제본 (http://stackoverflow.com/questions/8968701/using-a-xml-schema-to-fix-an-xml-in-java)) – Stephan

답변

2

f(invalid XML, target XSD) = valid XML으로 묘사 된 내용은 사소한 XML/XSD를 제외하고 일반적인 방식으로 빌드하는 것은 사실상 불가능합니다. 그 이유는 (적어도) 필자가 할 수있는 주류 도구를 알지 못하는 이유 일 수 있습니다 그런 것 ... (단지 당신에게 당신의 질문에 대한 나의 짧은 대답을주었습니다).

같은 XML이 XSD에서 설명 될 수있는 여러 가지 방법과 잠재적으로 잘못된 XML을 준수 할 수있는 여러 가지 방법이있을 수 있습니다 (엄격히 말하자면 수정할 수없는 시나리오가 있음) ... 패턴을 알아내는 것이 더 실용적입니다 (XML의 문제가 일관성이 있다는 가정하에) XML을 수정하고 사용자 정의 스크립트를 통해 수정 사항을 적용해야합니다 (XSLT는 하나 일 수도 있지만 필자도 보았습니다. 사용 가능한 도구 및/또는 기술에 따라 "diffgram"기반 접근법).

여기에 답글을 쓰겠습니다 ... 실제로 테스트 프레임 워크 (Windows 만 실행 중입니다)는 일반적으로 다양한 데이터 소스에서 테스트 데이터를 수집하고 유효한 XML을 생성 할 수 있습니다 지정된 XSD 및 일종의 매핑 메타 데이터를 기반으로합니다. "매핑 메타 데이터"에는 패턴이 필요합니다. 위를 참조했습니다 ...

XML/XSD의 복잡성에 따라 이러한 프레임 워크 구성에는 시간이 걸릴 수 있지만 ... 여기에 요점은 , 사소한 일이라도 테스트 프레임 워크에서 진행되는 "자동화"가별로 없습니다.

(업데이트 재 : 귀하의 코멘트에 조롱/프레임 워크 측면)

당신은 뭔가 다른 (즉 조롱을) 수정했는데 뭔가를 해결하기 위해 노력 것으로 보인다. mocking이 필요한 경우, 조롱에 대한 나의 접근 방식은 (XQuery 또는 XML 데이터베이스와 같은 것들이 발명되기 전에) 수년 전에 같은 문제가 발생했기 때문에 조롱하는 방식이 약간 다릅니다. 가장 간단한 설정에서 데이터는 스프레드 시트에 있습니다. 독점적 인 XML 빌더 shapes은 (임의의) XSD로 설명 된 컨텐츠 모델을 통해 걷는 방식으로 계층 적 세트로 데이터를 변환합니다. 데이터는 Excel에서 가져 오거나, 외부 데이터 소스에서 조회하거나, 기본값으로 설정 될 수 있습니다. 결과는 XSLT 또는 COBOL 카피 북을 사용하여 변환되고 파일로 저장되거나 또는 XML 문서의 일부로 스트리밍되는 하나 이상의 XML 조각 일 수 있습니다. TCP/IP 기반 조롱 프레임 워크 (웹 서비스, IMS 트랜잭션 등)

내가 묘사 한이 조롱 방법 ...동일한 데이터/테스트 사례를 사용하여 웹 서비스, IMS 트랜잭션, 드라이브 UI 자동화 테스트 또는 엔터프라이즈 환경에서 실행되는 모든 것을 테스트 할 수 있다는 것을 알고 있기 때문에 "데이터를 먼저 배치"합니다. 특정 사양 (XSD, COBOL 카피 북, CSV 등)을 준수하기위한 "쉐이핑 (Shaping)"데이터는 "프리젠 테이션"... 따라서 우려의 분리입니다. 누락 된 것으로 보이는 필드를 "삽입"하여 새 XML을 얻는 것이 얼마나 쉬운 지 상상해보십시오.

+0

나는 동의하지 않는다. 단지 현재 구조를 유지하면서 XSD를 통과시키는 것이다. XSD를 전달하는 모든 XML이 정확합니다. 내가 루프를 통과 할 수있는 응용 프로그램을 작성할 수 있습니다. 모든 조합은 작동 하나 반환하지만 큰 프로젝트와 오늘은 필요합니다 .-) Thx for reply – IAdapter

+0

@IAdapter, 동의하지 않거나 반대하는 내용이 너무 모호합니다. 내 끝에서. 첫째, "현재 구조"가 유효하다고 가정합니다 ... 일반 도구가이를 어떻게 알 것인가? 두 개의 XML이 특정 영역에서 중복 될 수 있지만 다른 모델로 연결되거나 꼬리 끌림이 발생할 수 있습니다 ... 일반적으로 말하면 가능한 모든 조합을 매우 비싸게 (계산적으로 말하면) 생성 할 수있는 큰 기회가 있습니다 ... 공유 할 수 있다면 구체적인 예를 들어, 우리는 더 나은 대화를 나눌 수 있습니다 ... :) –

1

재미있는 컴퓨터 과학 과제이지만 잘 작성하는 것은 어렵습니다. 어떤 의미에서는 문제는 간단합니다. 스키마 D와 일치하지 않는 문서 D가있는 경우 S를 준수하는 것으로 알려진 문서 V를 대체하여 D를 "복구"할 수 있습니다. 그러나 유용하지는 않습니다. S에 부합하는 어떤 문서 D '가 있고 어떤면에서 D와 비슷하다. 이상적으로, S에 부합하는 모든 문서 중 적합한 메트릭을 사용하여 D에 가장 가까운 문서를 찾고자합니다.

이 문제에 대한 이론적 또는 실제적 연구는 잘 모르겠지만 연구하는 데 흥미로운 것으로 들립니다. 어떤 경우에는 잊어 버리십시오.

+0

그 프레임 워크는 멋지다고 생각합니다.내 문제를 해결하기 위해 JAXB 코드 geenation을했지만 일반적인 솔루션은 오픈 소스 프로젝트에 대한 아주 좋은 아이디어였습니다. – IAdapter

+0

나는 그와 같은 프레임 워크를 직접 만들려고 생각했습니다. 솔직하게 말해줘. 목표는 통합 테스트 및 사람들에게 realData + some fakeData를 제공하는 것을 돕는 것입니다. fakeData 또는 실제 데이터 만 사용할 수는 있지만 XSD는 유효하지 않으므로 자신이 선택한 도구에서 구문 분석 할 수 없습니다. – IAdapter

관련 문제