DTD 또는 XSD에서 샘플 XML 문서를 생성하는 방법은 무엇입니까?
우리는 상당한 양의 XML 변환을 포함하는 응용 프로그램을 개발하고 있습니다.우리는 제대로 된 입력 테스트 데이터 자체가 없고, DTD나 XSD 파일만 있습니다.우리는 이 파일들로부터 우리의 테스트 데이터를 직접 생성하고 싶습니다.쉽게 할 수 있는 방법이 있습니까?
편집
이를 위한 무료 도구는 분명히 존재하지 않습니다. 그리고 산소X에 동의합니다.ML은 이를 위한 가장 좋은 도구 중 하나입니다.
Visual Studio 2008 SP1 이상에서 XML 스키마 탐색기는 다음과 같은 기본 샘플 데이터를 사용하여 XML 문서를 작성할 수 있습니다.
- XSD 문서 열기
- XML 스키마 탐색기로 전환
- 루트 노드에서 마우스 오른쪽 단추를 누른 후 "Xml 샘플 생성"을 선택합니다.

무료 및 오픈 소스 Eclipse IDE의 최신 버전에서는 DTD 및 XSD 파일에서 XML 문서를 생성할 수 있습니다.지정된 *.dtd 또는 *.xsd 파일을 마우스 오른쪽 단추로 클릭하고 "Generate -> XML File..."을 선택합니다. 생성할 루트 요소와 선택적 속성 및 요소를 생성할지 여부를 선택할 수 있습니다.
물론 Eclipse를 사용하여 DTD 및 XSD 스키마 파일을 만들고 편집할 수도 있습니다.그리고 플러그인을 설치할 필요가 없습니다.표준 분포에 포함되어 있습니다.
Intellij Idea 사용자의 경우:
도구 -> XML 작업 보기

매우 잘 작동하는 것 같습니다. (시험해 본 바로는)
편집:
@naXa에서 언급한 대로 이제 XSD 파일을 마우스 오른쪽 버튼으로 클릭하고 "XSD 스키마에서 XML Document 생성.."을 클릭할 수도 있습니다.."
Oxygen(http://www.oxygenxml.com/) 도 그렇게 한다고 생각하지만, 그것은 또 다른 상업적인 제품입니다.좋은 일이긴 하지만...XML 작업을 많이 하시는 분들께는 꼭 추천해 드리고 싶습니다.이클립스 플러그인도 잘 들어있습니다.
30일간 무료 체험이 있다고 생각합니다.
Sourceforge에서 사용할 수 있는 캠프로세서.net은 모든 XSD에 대해 xml 테스트 케이스 생성을 수행할 것입니다.임의 정크 사례가 아닌 실제 사례를 확인하기 위해 내용 힌트를 사용하는 등 테스트 사례를 생성하는 방법을 보여주는 자습서가 있습니다.
자습서는 여기 http://www.oasis-open.org/committees/download.php/29661/XSD%20and%20jCAM%20tutorial.pdf 에서 확인할 수 있습니다.
OASIS Content Assembly Mechanism(CAM) 표준을 사용하여 XSD를 보다 XSLT 친화적인 구조로 재구성하는 도구에 대한 자세한 정보는 리소스 웹 사이트 http://www.jcam.org.uk 에서 확인할 수 있습니다.
즐겨요, DW
Sun/Oracle Multi-Schema Validator의 일부인 XML Instance Generator를 사용할 수 있습니다.
README.txt 상태입니다.
Sun XML Generator는 여러 종류의 스키마에서 다양한 XML 인스턴스를 생성하는 Java 도구입니다.DTD, RELAX 네임스페이스, RELAX 코어, TREX 및 W3C XML 스키마 파트 1의 서브셋을 지원합니다. [...]
스키마에서 유효한 인스턴스와 유효하지 않은 인스턴스를 모두 생성할 수 있는 명령줄 도구입니다.특정 스키마를 준수해야 하는 XML 응용프로그램의 테스트 케이스를 생성하는 데 사용할 수 있습니다.
후 풀기 xmlgen.zipmsv 다운로드 페이지에서 다음 명령을 실행하여 자세한 사용 지침을 가져옵니다.
java -jar xmlgen.jar -help
이 도구는 BSD 라이센스로 출시된 것으로 보이며 소스 코드는 여기서 액세스할 수 있습니다.
XMLSpy는 당신을 위해 그렇게 해주지만, 그건 공짜가 아닙니다.
Liquid Xml Studio가 당신을 위해 해주고 무료라고 생각하지만, 개인적으로 테스트 데이터를 만드는 데 사용한 적은 없습니다.
지금까지 아무도 질문에 답하지 못한 것 같습니다 :)
IclipseLink의 MOXy를 사용하여 바인딩 클래스를 동적으로 생성한 다음 바인딩 유형을 재귀적으로 거칩니다.다소 무겁지만 개체 트리가 인스턴스화되면 XPath 값을 주입할 수 있습니다.
InputStream in = new FileInputStream(PATH_TO_XSD);
DynamicJAXBContext jaxbContext =
DynamicJAXBContextFactory.createContextFromXSD(in, null, Thread.currentThread().getContextClassLoader(), null);
DynamicType rootType = jaxbContext.getDynamicType(YOUR_ROOT_TYPE);
DynamicEntity root = rootType.newDynamicEntity();
traverseProps(jaxbContext, root, rootType, 0);
TraverseProps는 매우 단순한 재귀적 방법입니다.
private void traverseProps(DynamicJAXBContext c, DynamicEntity e, DynamicType t, int level) throws DynamicException, InstantiationException, IllegalAccessException{
if (t!=null) {
logger.info(indent(level) + "type [" + t.getName() + "] of class [" + t.getClassName() + "] has " + t.getNumberOfProperties() + " props");
for (String pName:t.getPropertiesNames()){
Class<?> clazz = t.getPropertyType(pName);
logger.info(indent(level) + "prop [" + pName + "] in type: " + clazz);
//logger.info("prop [" + pName + "] in entity: " + e.get(pName));
if (clazz==null){
// need to create an instance of object
String updatedClassName = pName.substring(0, 1).toUpperCase() + pName.substring(1);
logger.info(indent(level) + "Creating new type instance for " + pName + " using following class name: " + updatedClassName );
DynamicType child = c.getDynamicType("generated." + updatedClassName);
DynamicEntity childEntity = child.newDynamicEntity();
e.set(pName, childEntity);
traverseProps(c, childEntity, child, level+1);
} else {
// just set empty value
e.set(pName, clazz.newInstance());
}
}
} else {
logger.warn("type is null");
}
}
모든 것을 XML로 변환하는 것은 꽤 쉽습니다.
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);
또한 http://www.wmhelp.com 에서 볼 수 있는 XMLPad(자유롭게 사용 가능)를 사용하여 xml 샘플을 생성할 수 있습니다.XSD -> 메뉴에서 샘플 XML 파일을 생성합니다.
마이크로소프트는 "문서 생성기" 도구를 샘플로 공개했습니다.샘플 앱의 구조와 동작에 대해 자세히 설명한 기사입니다.
샘플 생성 도구만 실행하려면 여기를 클릭하고 MSI를 설치합니다.
무료예요.소스를 사용할 수 있습니다.필요합니다.NET Framework를 실행합니다.XSD에서만 작동합니다(Relax NG 또는 DTD는 아님).
XML-XIG: XML 인스턴스 생성기
http://xml-xig.sourceforge.net/
이 오픈 소스가 도움이 될 것입니다.
Microsoft Office에는 XSD를 가져오기로 하는 'InfoPath'가 있으며 XML 파일을 만들기 위한 폼 기반 편집기를 빠르고 쉽게 정의할 수 있습니다.양식을 정의하는 모드와 양식을 작성하여 XML 파일을 작성하는 모드의 두 가지 모드가 있습니다.오피스 2003과 함께 처음 출시된 것으로 알고 있으며, 대부분의 사람들은 설치를 하지 않습니다.제가 그것을 얼마나 좋아하는지에 대해 충격을 받습니다.
XML Blueprint 7.5는 다음 작업을 수행할 수 있습니다. - dtd에서 샘플 xml 생성 - 완화 스키마에서 샘플 xml 생성 - xml 스키마에서 샘플 xml 생성
오픈 소스 버전의 비누UI는 WSDL(XSD 유형 정의 포함)에서 SOAP 요청을 생성할 수 있으므로 이 기능의 오픈 소스 구현이 있는 것처럼 보입니다.안타깝게도 어느 도서관이 이런 일에 익숙한지 알 수가 없습니다.
Liquid XML Studio에는 XML 스키마에서 샘플 XML 파일을 작성하는 XML Sample Generator 마법사가 있습니다.결과 데이터가 스키마를 준수하는 것처럼 보입니다(정규 패턴에 대한 데이터를 생성할 수 없습니다).
OpenXSD 라이브러리에는 XSD를 기반으로 XML 인스턴스를 생성할 수 있는 지원이 있다고 나와 있습니다.저것 좀 봐봐.
완성도를 위해 비슷한 (그러나 자바에 특화된) 질문에 언급된 http://code.google.com/p/jlibs/wiki/XSInstance, 을 추가하겠습니다.XSD에서 샘플 XML을 생성할 자바 "API"가 있습니까?
XML Blueprint에서도 이 작업을 수행합니다. 여기에 나와 있는 지침
http://www.xmlblueprint.com/help/html/topic_170.htm
무료는 아니지만 10일 동안 무료 체험이 있습니다. 빠르고 효율적인 것 같습니다. 아쉽게도 Windows만 해당합니다.
http://xsd2xml.com/, 온라인 XSD to XML 생성기도 있습니다.
언급URL : https://stackoverflow.com/questions/17106/how-to-generate-sample-xml-documents-from-their-dtd-or-xsd
'programing' 카테고리의 다른 글
| NGINX를 사용하여 URL에서 .php와 .html 확장자를 모두 제거하는 방법은 무엇입니까? (0) | 2023.09.13 |
|---|---|
| 로컬 mariadb mac에 액세스할 수 없습니다.InnoDB 오류 (0) | 2023.09.13 |
| require("path")를 사용할 수 있습니까?URL을 안전하게 연결하기 위해 가입합니까? (0) | 2023.09.13 |
| Oracle - 공백을 제거하는 방법? (0) | 2023.09.13 |
| PLS-00103: 다음 중 하나를 예상할 때 기호가 발생했습니다. (0) | 2023.09.13 |
