Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在运行时将JAXB注释类转换为模式实例?_Java_Xml_Jaxb_Jaxb2 - Fatal编程技术网

Java 如何在运行时将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

我知道如何在编译时创建模式(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 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);