簡體   English   中英

針對多個 XSD(存儲為資源)驗證 XML。 Spring 開機

[英]Validating XML against multiple XSD(stored as resources). Spring Boot

我花了很多時間針對XML中的多個XSD驗證 XML。 即使我將所有XSD模式都提供給 SchemaFactory,它也不起作用,因為主模式無法看到在主 XSD 文件中聲明的import schema 即使我將此模式作為文件提供它也不起作用,因為Spring's資源文件無法解析為 absolute path

<xs:import namespace="http://test.com/types" schemaLocation="types.xsd"/>

1.首先我們需要這個可以解析xsd模式的依賴:

implementation("org.apache.ws.xmlschema:xmlschema-core:2.2.4")

2. 我們創建 2 個 bean。 一個用於存儲我們的XSD's (如果存在此schemaLocation="..." ,它將自動查找其他文件),另一個用於我們的Validator

    @Bean
    fun schema(): XsdSchemaCollection {
        return CommonsXsdSchemaCollection(
            ClassPathResource("xsd/main.xsd")
        ).also { it.setInline(true) }
    }

    @Bean
    fun myValidator(schema: XsdSchemaCollection): XmlValidator {
        return schema.createValidator()
    }

3.我們可以使用它:

    @Autowired
    private val myValidator: XmlValidator

    fun validate(data: String): Array<SAXParseException> {
        return myValidator.validate(StreamSource(data.byteInputStream()))
    }

Array<SAXParseException>將包含驗證異常列表,如果有的話

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM