1

如何验证内存中已作为 DOM 文档的 XML 文档?

4

3 回答 3

2

您可以使用javax.xml.validationAPI 来验证内存中的 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);
    }

}

了解更多信息

于 2011-09-24T10:25:28.403 回答
0

你是如何制作你的模型的?我有一个工作解决方案,我得到一个文本格式的 XML 消息,我使用xmlbeans解析。然后我有能力调用它的验证方法。所以在我的 maven 构建期间编译了一个 Java 类,它反映了我拥有的 XSD。

于 2011-09-24T09:12:05.070 回答
0

它没有什么特别之处。javax.xml.validation验证器采用Source. _ 检查实现类的构造函数Source

于 2011-09-24T10:56:07.770 回答