문제

우리는 상당한 양의 XML 변환이 포함된 애플리케이션을 개발 중입니다.우리는 그 자체로는 적절한 입력 테스트 데이터가 없고 DTD 또는 XSD 파일만 가지고 있습니다.우리는 이 파일에서 테스트 데이터를 직접 생성하고 싶습니다.그렇게 하는 쉽고/무료인 방법이 있나요?

편집하다

이를 위한 무료 도구는 분명히 없으며 OxygenXML이 이를 위한 최고의 도구 중 하나라는 데 동의합니다.

도움이 되었습니까?

해결책

내 생각엔 산소(http://www.oxygenxml.com/)도 그렇게 하지만 그것은 또 다른 상용 제품입니다.좋은 일이긴 하지만...XML 작업을 많이 하는 사람에게 강력히 추천합니다.멋진 Eclipse 플러그인에도 제공됩니다.

모든 기능을 갖춘 무료 30일 평가판이 있다고 생각합니다.

다른 팁

Visual Studio 2008 SP1 이상에서는 XML 스키마 탐색기 몇 가지 기본 샘플 데이터를 사용하여 XML 문서를 만들 수 있습니다.

  1. XSD 문서를 엽니다.
  2. XML 스키마 탐색기로 전환
  3. 루트 노드를 마우스 오른쪽 버튼으로 클릭하고 "샘플 Xml 생성"을 선택합니다.

Screenshot of the XML Schema Explorer

최신 버전의 무료 및 오픈 소스에서는 IDE에서는 DTD 및 XSD 파일에서 XML 문서를 생성할 수 있습니다.지정된 *.dtd 또는 *.xsd 파일을 마우스 오른쪽 버튼으로 클릭하고 "생성 -> XML 파일..."을 선택합니다.생성할 루트 요소와 선택적 특성 및 요소를 생성해야 하는지 여부를 선택할 수 있습니다.

물론 Eclipse를 사용하여 DTD 및 XSD 스키마 파일을 생성하고 편집할 수도 있습니다.그리고 어떤 플러그인도 설치할 필요가 없습니다.표준분포에 포함되어 있습니다.

Intellij Idea 사용자의 경우:

도구 -> XML 작업을 살펴보십시오.

enter image description here

매우 잘 작동하는 것 같습니다(테스트한 바에 따르면).

편집하다:

@naXa가 언급한 것처럼 이제 XSD 파일을 마우스 오른쪽 버튼으로 클릭하고 "XSD 스키마에서 XML 문서 생성..."을 클릭할 수도 있습니다.

Sourceforge.net에서 사용 가능한 캠프로세서는 모든 XSD에 대해 xml 테스트 사례 생성을 수행합니다.임의의 정크 예제가 아닌 현실적인 예제를 보장하기 위해 컨텐츠 힌트를 사용하는 것을 포함하여 자신만의 테스트 예제를 생성하는 방법을 보여주는 튜토리얼이 있습니다.

튜토리얼은 여기에서 볼 수 있습니다:http://www.oasis-open.org/committees/download.php/29661/XSD%20and%20jCAM%20tutorial.pdf

OASIS CAM(Content Assembly Mechanism) 표준을 사용하여 XSD를 보다 XSLT 친화적인 구조로 리팩터링하는 도구에 대한 자세한 내용은 리소스 웹 사이트에서 찾을 수 있습니다. http://www.jcam.org.uk

즐겨보세요, DW

다음의 일부인 XML 인스턴스 생성기를 사용할 수 있습니다. Sun/Oracle 다중 스키마 유효성 검사기.

README.txt 상태는 다음과 같습니다.

Sun XML Generator는 여러 종류의 스키마에서 다양한 XML 인스턴스를 생성하는 Java 도구입니다.DTD, Relax Namespace, Relax Core, Trex 및 W3C XML 스키마 파트 1의 하위 집합을 지원합니다.[...]

이 도구는 Schemas에서 유효하고 유효하지 않은 인스턴스를 모두 생성 할 수있는 명령 줄 도구입니다.특정 스키마를 준수 해야하는 XML 애플리케이션의 테스트 케이스를 생성하는 데 사용할 수 있습니다.

다운로드 및 압축 풀기 xmlgen.zip ~로부터 msv 다운로드 페이지 자세한 사용법 지침을 얻으려면 다음 명령을 실행하십시오.

java -jar xmlgen.jar -help

이 도구는 BSD 라이센스에 따라 출시된 것으로 보입니다.소스 코드는 다음에서 액세스할 수 있습니다. 여기

XMLSpy 당신을 위해 그렇게 해드립니다. 비록 무료는 아니지만…

나는 그것을 믿는다 액체 XML 스튜디오 이 기능은 무료이며 테스트 데이터를 생성하는 데 개인적으로 사용하지 않았습니다.

지금까지 아무도 질문에 답할 수 없었던 것 같습니다 :)

EclipseLink의 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);

여기에서 찾을 수 있는 XMLPad(무료 사용)를 사용할 수도 있습니다. http://www.wmhelp.com XML 샘플을 생성합니다.메뉴에서:XSD -> 샘플 XML 파일을 생성합니다.

Microsoft는 "문서 생성기" 도구를 샘플로 게시했습니다. 이것은 기사입니다 샘플 앱의 아키텍처와 작동을 자세히 설명합니다.

샘플 생성 도구만 실행하고 싶다면, 여기를 클릭하세요 MSI를 설치해 보세요.

그것은 무료입니다.소스를 사용할 수 있습니다.실행하려면 .NET Framework가 필요합니다.XSD에서만 작동합니다.(Relax NG 또는 DTD가 아님)

XML-XIG:XML 인스턴스 생성기

http://xml-xig.sourceforge.net/

이 오픈 소스가 도움이 될 것입니다.

마이크로소프트 오피스에는 'InfoPath'는 XSD를 가져오기로 사용하고 XML 파일 생성을 위한 양식 기반 편집기를 빠르고 쉽게 정의할 수 있게 해줍니다.두 가지 모드가 있습니다. 하나는 양식을 정의하는 모드이고 다른 하나는 양식을 작성하여 XML 파일을 생성하는 모드입니다.나는 그것이 Office 2003과 함께 처음 제공되었다고 생각하며 대부분의 사람들은 그것을 설치하지 않습니다.내가 그것을 얼마나 좋아하는지에 대해 충격을 받았습니다.

XMLBlueprint 7.5는 다음을 수행할 수 있습니다:- DTD에서 샘플 XML 생성 - 릴리스 NG 스키마에서 샘플 XML 생성 - XML ​​스키마에서 샘플 XML 생성

오픈 소스 버전 비누UI XSD 유형 정의가 포함된 WSDL에서 SOAP 요청을 생성할 수 있으므로 이 기능의 오픈 소스 구현이 있는 것처럼 보입니다.불행히도 나는 어떤 라이브러리가 이것에 익숙한지 파악하지 못했습니다.

Liquid XML Studio에는 XML 샘플 생성기 XML 스키마에서 샘플 XML 파일을 빌드하는 마법사입니다.결과 데이터는 스키마를 준수하는 것으로 보입니다(정규식 패턴에 대한 데이터를 생성할 수는 없습니다).

Generate an XML Sample from an XSD

그만큼 오픈XSD 라이브러리에서는 XSD를 기반으로 XML 인스턴스 생성을 지원한다고 언급합니다.확인해 보세요.

완전성을 위해 추가하겠습니다. http://code.google.com/p/jlibs/wiki/XSInstance, 유사한 (그러나 Java 관련) 질문에서 언급되었습니다. XSD에서 샘플 XML을 생성하는 Java "API"가 있습니까?

XML Blueprint도 그런 일을 합니다.여기 지침

http://www.xmlblueprint.com/help/html/topic_170.htm

무료는 아니지만 10일 무료 평가판이 있습니다.빠르고 효율적인 것 같습니다.안타깝게도 Windows에만 해당됩니다.

또한 있습니다 http://xsd2xml.com/, 온라인 XSD-XML 생성기

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top