Проверка XML, который является документом DOM - PullRequest
1 голос
/ 24 сентября 2011

Как проверить документ XML, который у меня уже есть в памяти, как документ DOM?

Ответы [ 3 ]

2 голосов
/ 24 сентября 2011

Вы можете использовать API javax.xml.validation для проверки XML в памяти. Ниже приведен пример использования этих API с JAXBSource, для проверки модели DOM просто используйте DOMSource.

package blog.validation;

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;
import javax.xml.validation.Validator;

public class Demo {

    public static void main(String[] args) throws Exception {
        Customer customer = new Customer();
        customer.setName("Jane Doe");
        customer.getPhoneNumbers().add(new PhoneNumber());
        customer.getPhoneNumbers().add(new PhoneNumber());
        customer.getPhoneNumbers().add(new PhoneNumber());

        JAXBContext jc = JAXBContext.newInstance(Customer.class);
        JAXBSource source = new JAXBSource(jc, customer);

        SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
        Schema schema = sf.newSchema(new File("customer.xsd"));

        Validator validator = schema.newValidator();
        validator.setErrorHandler(new MyErrorHandler());
        validator.validate(source);
    }

}

Для получения дополнительной информации

0 голосов
/ 24 сентября 2011

В этом нет ничего особенного. Валидаторы javax.xml.validation принимают a Source. Проверьте конструкторы реализующих классов Source.

0 голосов
/ 24 сентября 2011

Как вы составили свою модель? У меня есть решение на работе, где я получаю сообщение XML в текстовом формате, которое я анализирую, используя xmlbeans . Тогда у меня есть возможность вызвать метод проверки на нем. Итак, есть класс Java, скомпилированный во время моей сборки maven, который отражает XSD, который у меня есть.

...