gpt4 book ai didi

java - 根据 xsd/生成的对象验证对象

转载 作者:行者123 更新时间:2023-11-30 08:39:00 26 4
gpt4 key购买 nike

我有一个应用程序,我在其中从 xsd 模式生成了 Java 类。我还有一个使用 jax-rs 的休息服务。我需要验证 POST 方法的输入,以确保符合 xsd 模式中设置的规则。

@POST
@Path("/person/add")
public void addPerson(Person person) {

//Need to validate Person object

daoManager.addPersonToDB(person);
}

Person对象是从xsd生成的类。我可以假设该对象符合 xsd,还是我必须验证该对象?在那种情况下,我该如何验证?

我知道这是一个新手问题,但我希望有人能提供帮助。

最佳答案

我自己还没有尝试过,但我认为下面的代码会起作用。

JAXBContext context = JAXBContext.newInstance(Person.class);
Marshaller marshaller = context.createMarshaller();

根据你的命名空间,使用

marshaller.setProperty(Marshaller.JAXB_NO_NAMESPACE_SCHEMA_LOCATION, "yourXSD.xsd");

marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "yourXSD.xsd");

然后编码人员实例,如果没有异常,则说明人员实例正常。否则,它不是。


哦,我忘了一件事。在编码之前,请记住 setSchema()

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

marshaller.setSchema(schema);
marshaller.setEventHandler(new ValidationEventHandler() {
public boolean handleEvent(ValidationEvent event) {
System.out.println(event);
return false; //to stop the marshal if anything happened
}
});

关于java - 根据 xsd/生成的对象验证对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36327775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com