Проверка значения Java с помощью XML-схемы - PullRequest
4 голосов
/ 18 ноября 2010

возможно ли проверить значение в Java-объекте с некоторыми правилами в xml-схеме?

Например, у меня есть String txt = "blablabla", и я должен проверить, нормально ли это для <xs:element name="foo" type="string32"/>со строкой32 ограничение 32 карата.длина макс.

Возможно ли это?Если это невозможно с xml-схемой и jaxb, возможен ли другой язык схемы?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 18 ноября 2010

Вы можете сделать следующее:

import java.io.File;
import javax.xml.XMLConstants;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.util.JAXBSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;

public class Demo {

    public static void main(String[] args) throws Exception {
        SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
        Schema schema = sf.newSchema(new File("customer.xsd")); 

        JAXBContext jc = JAXBContext.newInstance(Customer.class);

        Customer customer = new Customer();
        // populate the customer object
        JAXBSource source = new JAXBSource(jc, customer);
        schema.newValidator().validate(source);
    }

}

Более подробный пример см .:

1 голос
/ 18 ноября 2010

Вы должны сопоставить объект Java с XML, затем маршалировать объект в XML, а затем передать XML для анализатора, который выполняет проверку схемы.Может быть, лучше написать код для разбора XML-схемы и чтения схемы, а затем использовать информацию о схеме для создания валидатора для вашего объекта.Таким образом, вам не придется маршалировать свой объект в xml только для его проверки.

...