문제

사무실에서 우리는 현재 우리가 제공 한 스키마에 대해 XML 파일을 생성하는 응용 프로그램을 작성하고 있습니다. .xsd 파일에 스키마가 있습니다.

생성 된 XML이 스키마와 일치하는지 확인하기 위해 자동 테스트에 사용할 수있는 도구 또는 라이브러리가 있습니까?

스키마 체커를 번들링하지는 않지만 개발 중에 DEVS에서만 사용할 수 있어야하지만 상업용 사용에 적합한 무료 도구를 선호합니다.

XML 파일을 생성 한 다음 테스트에서 별도의 프로그램을 호출하여 유효성 검사를 수행 할 수 있다고 생각하지는 않지만 우리의 개발 언어는 C ++입니다.

도움이 되었습니까?

해결책

약간의 연구 후에, 나는 가장 좋은 대답은 xerces, 모든 XSD를 구현하므로 교차 플랫폼이며 널리 사용됩니다. 나는 a Github의 작은 Java 프로젝트 일반적으로 xerces 인 기본 JRE 파서를 사용하여 명령 줄에서 검증합니다. Windows/Mac/Linux에서 사용할 수 있습니다.

또 한있다 Xerces의 C ++ 버전 오히려 사용하려면 사용할 수 있습니다. 그만큼 stdinparse 유틸리티 명령 줄에서 호출하는 데 사용할 수 있습니다. 또한 아래의 의견자는 이것을 지적합니다 보다 완전한 래퍼 유틸리티.

일부인 XMLLINT를 사용할 수도 있습니다. libxml. 이미 설치했을 수 있습니다. 예제 사용 :

xmllint --noout --schema XSD_FILE XML_FILE

한 가지 문제는 libxml이 모든 사양을 구현하지 않으므로 문제가 발생할 수 있다는 것입니다.

또는 Windows에있는 경우 사용할 수 있습니다. MSXML, 그러나 당신은 이것에 설명 된 GUI와 같이 그것을 호출하려면 일종의 래퍼가 필요합니다. DDJ 기사. 그러나 Windows의 대부분의 사람들은 Notepad ++와 같은 XML 편집기를 사용하는 것 같습니다 ( 네이트의 대답) 또는 XML Notepad 2007 ~처럼 Stevec가 제안합니다 (여기서 언급하지 않을 몇 가지 상업용 편집자도 있습니다).

마지막으로, 불행히도 다른 프로그램이 다른 결과를 제공 할 것입니다. 이것은 주로 XSD 사양의 복잡성 때문입니다. 여러 도구로 스키마를 테스트 할 수 있습니다.

업데이트: 나는 이것에 대해 a 블로그 게시물.

다른 팁

플러그인이 있습니다 메모장 ++ ~라고 불리는 XML 도구 XSD에 대한 XML 검증 및 검증을 제공합니다.

사용 방법을 볼 수 있습니다 여기.

xmlstarlet 이 작업을 수행하는 명령 줄 도구입니다.

$ xmlstarlet val --help
XMLStarlet Toolkit: Validate XML document(s)
Usage: xmlstarlet val <options> [ <xml-file-or-uri> ... ]
where <options>
  -w or --well-formed        - validate well-formedness only (default)
  -d or --dtd <dtd-file>     - validate against DTD
  -s or --xsd <xsd-file>     - validate against XSD schema
  -E or --embed              - validate using embedded DTD
  -r or --relaxng <rng-file> - validate against Relax-NG schema
  -e or --err                - print verbose error messages on stderr
  -b or --list-bad           - list only files which do not validate
  -g or --list-good          - list only files which validate
  -q or --quiet              - do not list files (return result code only)

NOTE: XML Schemas are not fully supported yet due to its incomplete
      support in libxml2 (see http://xmlsoft.org)

XMLStarlet is a command line toolkit to query/edit/check/transform
XML documents (for more information see http://xmlstar.sourceforge.net/)

귀하의 경우 사용은 다음과 같은 선을 따라야합니다.

xmlstarlet val --xsd your_schema.xsd your_file.xml

창문에는 무료가 있습니다 XML Notepad 2007. XSD를 선택할 수 있습니다.

온라인 XML 스키마 유효성 검사기 DecisionSoft에서 주어진 스키마에 대해 XML 파일을 확인할 수 있습니다.

나는 xerces를 사용합니다.

http://xerces.apache.org/xerces-c/

빠르고 쉬운 XML 유효성 검사를위한 XML 편집기는 http://www.xml-buddy.com

설치 프로그램을 실행하면 사용하기 쉬운 데스크톱 응용 프로그램 또는 명령 줄로 XML 파일을 검증 할 수 있습니다. 또한 Schematron 및 Relaxng에 대한 지원을받습니다. 배치 검증도 지원됩니다 ...

업데이트 1/13/2012 : 명령 줄 도구는 XML 파서로 XERCES를 무료로 사용할 수 있으며 사용합니다.

http://www.xmlvalidation.com/

( "외부 XML 스키마에 대한 유효성 검사"상자를 확인하십시오)

나는 단지 스키마를 배우고 있습니다. 나는 allel ng를 사용하고 xmllint를 사용하여 검증을 사용하고 있습니다. xmlllint에서 나오는 오류로 인해 좌절됩니다. 나는 그들이 좀 더 유익했으면 좋겠다.

XML에 잘못된 속성이있는 경우 XMLLINT는 지원되지 않은 속성의 이름을 알려줍니다. 그러나 XML에 속성이 없으면 요소를 검증 할 수 없다는 메시지가 표시됩니다.

나는 매우 복잡한 규칙을 가진 매우 복잡한 XML을 연구하고 있으며, 이것에 익숙하지 않으므로 어떤 속성이 누락되었는지 추적하는 데 오랜 시간이 걸립니다.

업데이트 : 방금 좋아하는 Java 도구를 찾았습니다. xmllint와 같은 명령 줄에서 실행할 수 있으며 릴리쉬 NG를 지원합니다. https://msv.dev.java.net/

'Corefiling'의이 온라인 유효성 검사기가 매우 유용하다는 것을 알았습니다.
http://www.corefiling.com/opensource/schemavalidate.html

내 XSD를 검증하기위한 몇 가지 도구를 시도한 후에는 자세한 오류 정보를 제공 한 것입니다. 따라서 스키마의 오류를 수정할 수있었습니다.

XML에서 XSD를 검증하고 생성하는 훌륭한 시각적 도구 중 하나는 직관적이고 단순한 Intellij 아이디어입니다.

XML 스키마를 Microsoft Visual Studio의 Intellisense에 연결할 수 있습니다. 이 옵션은 실시간 유효성 검사와 자동 완성을 제공합니다.

Microsoft Visual C ++ 2010 Express의 무료 사본 에서이 정확한 시나리오가 실행됩니다.

다른 온라인 XML 스키마 (XSD) 유효성 검사기 : http://www.utilities-online.info/xsdvalidation/.

.NET 파일에서 XSD를 생성하기 위해 Microsoft의 XSD를 사용하는 경향이 있습니다. 또한 XMLStarlet을 사용하여 XML의 섹션을 구문 분석합니다. 귀하에게 사용할 최종 무료 도구는 Altovaxml 이며이 URL에서 사용할 수 있습니다. http://www.altova.com/download_components.html .

이를 통해 XML을 구문 분석하여 사용할 XSD를 선택하는 모든 XML 파일을 스캔 할 수 있습니다.

# Function:
#    verifyschemas - Will validate all xml files in a configuration directory against the schemas in the passed in directory
# Parameters:
#    The directory where the schema *.xsd files are located.  Must be using dos pathing like: VerifySchemas "c:\\XMLSchemas\\"
# Requirements:
#    Must be in the directory where the configuration files are located
#
verifyschemas()
{
    for FILENAME in $(find . -name '*.xml' -print0 | xargs -0)
    do
        local SchemaFile=$1$(getconfignamefromxml $FILENAME).xsd
        altovaxml /validate $FILENAME /schema $SchemaFile > ~/temp.txt 2> /dev/null
        if [ $? -ne 0 ]; then
            printf "Failed to verify: "
            cat ~/temp.txt | tail -1 | tr -d '\r'
            printf "    - $FILENAME with $SchemaFile\n"
        fi
    done
}

I를 사용하는 XML을 생성하려면 다음과 같습니다.

내가 사용하는 xsd 이름을 얻으려면 : xmlstarlet sel -t -t -m /xxx /* -v local -name () $ 1 | sed 's/$ //'

이를 통해 XML 파일의 요소 태그를 사용하여 올바른 XSD를 픽업 할 수 있습니다.

순 결과는 BASH 기능을 호출하여 모든 XML 파일을 스캔하여 확인할 수 있습니다. 그들이 여러 하위 디렉토리에 있더라도.

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