Java 如何使用oracle.XML.parser.v2.DOMParser使用XSD InputStream验证XML
我试图根据XSD文档验证XML文件。我用两种方法来做Java 如何使用oracle.XML.parser.v2.DOMParser使用XSD InputStream验证XML,java,xml,parsing,xsd,Java,Xml,Parsing,Xsd,我试图根据XSD文档验证XML文件。我用两种方法来做 XML和XSD都是文件 XML是一个文件,XSD是一个流 如果XML和XSD是文件 validateXML(xmlFile, xsdFile) { m_domParser = new DOMParser(); String url = "file:" + new File(xml).getAbsolutePath(); String xsdUrl = "file:" + new File
validateXML(xmlFile, xsdFile)
{
m_domParser = new DOMParser();
String url = "file:" + new File(xml).getAbsolutePath();
String xsdUrl = "file:" + new File(xsd).getAbsolutePath();
try
{
m_domParser.setValidationMode(XMLParser.SCHEMA_VALIDATION);
m_domParser.setXMLSchema(xsd);
Validator handler = new Validator();
m_domParser.setErrorHandler(handler);
m_domParser.parse(url);
m_xmlDoc = m_domParser.getDocument();
//determine what kinda utility requested
}
}
它工作正常,验证正确。下面是我为使用XSD信息作为流进行验证而编写的代码
import org.xml.sax.InputSource;
import oracle.xml.parser.v2.DOMParser;
validateXML(String xmlFile, InputStream is)
Reader reader;
try {
m_domParser = new DOMParser();
m_domParser.setValidationMode(XMLParser.SCHEMA_VALIDATION);
//get the XMLSchema from the input stream
XSDBuilder builder = null;
XMLSchema schema = null;
builder = new XSDBuilder();
Reader reader = new InputStreamReader(is,"UTF-8");
InputSource iSource = new InputSource(reader);
if(iSource != null) {
iSource.setEncoding("UTF-8");
schema = builder.build(iSource); //NOTE
}
m_domParser.setXMLSchema(schema);
Validator handler = new Validator();
m_domParser.setErrorHandler(handler);
//get the url for the xml file
String url = "file:" + new File(xmlFile).getAbsolutePath();
m_domParser.parse(url);
}
但是在构建过程中的注释注释(schema=builder.build(isoource);)中,它抛出了一个异常“从基类型的无效派生”缺少派生
XSD流是从同一个XSD文件生成的,为什么它会失败呢?在构建XMLSchema时,说“从基类型派生无效”是什么意思
请帮助我理解第二种情况中出现的错误。非常感谢您的快速回复。关于创建临时文件和传递itI,我不允许在应用程序中写入临时文件。关于创建临时文件和传递itI,我不允许在应用程序中写入临时文件。