0

xsd 形式のスキーマで生成された xml ファイルを検証しようとしています。問題は、スキーマの URL またはシステム上のスキーマの場所を渡す必要があるかどうかです。同様に、xml ファイルの内容またはその場所を渡す必要がありますか?

以下は私が使用しているコードスニペットです -

public void validateDTFAgainstXSD()
{
    String inputxml = "C:/Users/file.xml";
    String schemaLocation = "https://github.abcd/schema.xsd";
    try
    {
        SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
        File schemaFile = new File(schemaLocation);
        Schema schema = factory.newSchema(schemaFile);
        javax.xml.validation.Validator validator = schema.newValidator();

        Source source = new StreamSource(new StringReader(inputxml));
        validator.validate(source);
        System.out.println("File validated");
    }
    catch(Exception ex)
    {
        System.out.println("File not validated");
    }       
}
4

1 に答える 1

1

File オブジェクトまたは Source オブジェクトのいずれかを取る newSchema() オーバーロードがあります。ファイルを渡していますが、これで問題ありません。

Validator.validate() メソッドには Source が必要です。ファイル名がある場合は、new StreamSource(new File(filename)) を使用して Source を作成できます。あなたのやり方は間違っています.StringReaderでラップしている文字列には、XMLを含むファイルの名前ではなく、検証されるXMLが含まれていると想定しています。

于 2013-03-31T19:12:14.437 に答える