Java 无法解析org.xml.sax.SAXParseException:cvc elt.1:找不到元素';soapenv:Envelope';
下面是针对请求xml和请求xsd进行验证时出现的错误:Java 无法解析org.xml.sax.SAXParseException:cvc elt.1:找不到元素';soapenv:Envelope';,java,xml,xsd,Java,Xml,Xsd,下面是针对请求xml和请求xsd进行验证时出现的错误: Below is the code import java.io.File; import java.io.IOException; import javax.xml.XMLConstants; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validat
Below is the code
import java.io.File;
import java.io.IOException;
import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.xml.sax.SAXException;
public class XMLValidation {
public static void main(String[] args) {
System.out.println("request.xml validates agains xsd "+validateXMLSchema("request.xsd", "request.xml"));
}
public static boolean validateXMLSchema(String xsdPath, String xmlPath){
try {
SchemaFactory factory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema;
try {
schema = factory.newSchema(new File(xsdPath));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new File(xmlPath)));
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
catch (IOException e) {
System.out.println("Exception: "+e.getMessage());
}
return true;
}
您能否帮助我在我的代码中需要做哪些更改,以便在我的XSD中添加
我无法对XSD进行任何更改,因为它是标准的,而且Soap:env也不存在于该请求XSD中,而是存在于请求XML中,因此在验证它时,会说缺少标记。您有两个选项:
元素的DOMSource
而不是StreamSource
谢谢你的回复。你能用英语解释一下以上两点吗example@Sangeethacg-你在理解哪些部分上有困难?老实说,我在这两个方面都不太理解。您可以获取示例请求xsd和示例请求xml,并显示需要进行的确切更改吗?事实上,我是新的XML技术“java验证多模式”的谷歌搜索为第1点返回了大量的示例。添加了对第2点的澄清。
org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'soapenv:Envelope'.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1887)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:685)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:626)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3088)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:914)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.jaxp.validation.StreamValidatorHelper.validate(StreamValidatorHelper.java:144)
at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl.validate(ValidatorImpl.java:107)
at javax.xml.validation.Validator.validate(Validator.java:127)
at com.att.xmlvalidation.XMLValidation.validateXMLSchema(XMLValidation.java:35)
at com.att.xmlvalidation.XMLValidation.main(XMLValidation.java:23)