Java 如何在运行时将JAXB注释类转换为模式实例?
我知道如何在编译时创建模式(JAXB),但如何在运行时获得这些信息呢 模型类:Java 如何在运行时将JAXB注释类转换为模式实例?,java,xml,jaxb,jaxb2,Java,Xml,Jaxb,Jaxb2,我知道如何在编译时创建模式(JAXB),但如何在运行时获得这些信息呢 模型类: package pl.kkrzeminski; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class Model { @XmlElement(required = true) private String t
package pl.kkrzeminski;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Model {
@XmlElement(required = true)
private String text;
}
如何在运行时创建基于JAXB metadata Model.java的模式实例
package pl.kkrzeminski;
import org.xml.sax.SAXException;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.SchemaFactory;
import java.io.ByteArrayInputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws SAXException, IOException {
SchemaFactory sf = SchemaFactory.newInstance(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI);
// TODO how can i create at runtime instance of Schema based on Model.java?
javax.xml.validation.Schema schema = sf.newSchema(new Source[]{});
schema.newValidator().validate(new StreamSource(new ByteArrayInputStream("<model><text>test</text></model>".getBytes())));
}
}
pl.kkrzeminski包;
导入org.xml.sax.SAXException;
导入javax.xml.transform.Source;
导入javax.xml.transform.stream.StreamSource;
导入javax.xml.validation.SchemaFactory;
导入java.io.ByteArrayInputStream;
导入java.io.IOException;
公共班机{
公共静态void main(字符串[]args)引发SAXException、IOException{
SchemaFactory sf=SchemaFactory.newInstance(javax.xml.xmlstants.W3C\u xml\u SCHEMA\u NS\u URI);
//TODO如何在运行时创建基于Model.java的模式实例?
javax.xml.validation.Schema Schema=sf.newSchema(新源[]{});
schema.newValidator().validate(新的StreamSource(新的ByteArrayInputStream(“test.getBytes()));
}
}
解决方案(nazgul core xmlbinding spi jaxb)可在以下位置找到:
替换:
toReturn.setSystemId("");
与:
我不确定我是否明白你想要什么。您的输入和预期输出是什么?在运行时使用xml(json)验证输入字符串,所有类都是本地的,但是现在有一种简单的方法来验证输入,而不需要完整的WebServices堆栈。在编译时这样做有什么错?如果在运行时无法解决问题,我会尝试使用此模式验证JSON输入。我重写了MOXyJsonProvider,我得到了除了模式之外的所有东西来验证JSON。webservices中的模式验证太复杂,无法提取以在不同的上下文中使用。
toReturn.setSystemId(suggestedFileName);