使用xmlns通过xsd进行Java验证
我需要通过XSD验证XML。如果我在没有命名空间的情况下使用xsd,那么验证是好的。但如果XSD有targetNamespace,我会得到一个错误 文本错误:cvc elt.1:找不到元素'RequestGKN'的声明。 XML使用xmlns通过xsd进行Java验证,java,xml,validation,xsd,Java,Xml,Validation,Xsd,我需要通过XSD验证XML。如果我在没有命名空间的情况下使用xsd,那么验证是好的。但如果XSD有targetNamespace,我会得到一个错误 文本错误:cvc elt.1:找不到元素'RequestGKN'的声明。 XML 123 XSD 根元素 信息 Java代码 Schema schema = null; Document document = null; xml = "<?xml version=\"1.0\" encoding=\"utf-
123
XSD
根元素
信息
Java代码
Schema schema = null;
Document document = null;
xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" +
"<RequestGKN xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"urn://x-artefacts-rosreestr-gov-ru/requests/gkn/3.0.9\">" +
"<title>123</title>" +
"</RequestGKN>";
try {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);
DocumentBuilder parser = builderFactory.newDocumentBuilder();
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = docFactory.newDocumentBuilder();
document = builder.parse(new InputSource(new StringReader(xml)));
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
path = locationXSD.substring(0, locationXSD.lastIndexOf('/')+1);
//factory.setResourceResolver(new ResourceResolver());
Source schemaFile = new StreamSource(TemplateHandler.class.getClassLoader().getResourceAsStream(locationXSD));
schema = factory.newSchema(schemaFile);
} catch (Exception e) {
e.printStackTrace();
}
Validator validator = schema.newValidator();
validator.validate(new DOMSource(document));
Schema=null;
单据=空;
xml=“\n”+
"" +
"123" +
"";
试一试{
DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();
setNamespaceAware(true);
DocumentBuilder parser=builderFactory.newDocumentBuilder();
DocumentBuilderFactory docFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder=docFactory.newDocumentBuilder();
document=builder.parse(新的InputSource(新的StringReader(xml));
SchemaFactory factory=SchemaFactory.newInstance(xmlstants.W3C\u XML\u SCHEMA\u NS\u URI);
path=locationXSD.substring(0,locationXSD.lastIndexOf('/')+1);
//setResourceResolver(新的ResourceResolver());
Source schemaFile=newstreamsource(TemplateHandler.class.getClassLoader().getResourceAsStream(locationXSD));
schema=factory.newSchema(schemaFile);
}捕获(例外e){
e、 printStackTrace();
}
Validator Validator=schema.newValidator();
validator.validate(新的DOMSource(文档));
在创建DocumentBuilder
之前,请确保在DocumentBuilderFactory
中设置了架构。
schema
对象是线程安全的,可以毫无问题地重用
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
String path = locationXSD.substring(0, locationXSD.lastIndexOf('/')+1);
Source schemaFile = new StreamSource(TemplateHandler.class.getClassLoader().getResourceAsStream(locationXSD));
schema = factory.newSchema(schemaFile);//thread safe object which can be reused
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);
builderFactory.setSchema(schema);
DocumentBuilder builder = builderFactory.newDocumentBuilder();
document = builder.parse(new InputSource(new StringReader(xml)));
Validator validator = schema.newValidator();
validator.validate(new DOMSource(document));
Schema schema = null;
Document document = null;
xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" +
"<RequestGKN xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"urn://x-artefacts-rosreestr-gov-ru/requests/gkn/3.0.9\">" +
"<title>123</title>" +
"</RequestGKN>";
try {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);
DocumentBuilder parser = builderFactory.newDocumentBuilder();
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = docFactory.newDocumentBuilder();
document = builder.parse(new InputSource(new StringReader(xml)));
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
path = locationXSD.substring(0, locationXSD.lastIndexOf('/')+1);
//factory.setResourceResolver(new ResourceResolver());
Source schemaFile = new StreamSource(TemplateHandler.class.getClassLoader().getResourceAsStream(locationXSD));
schema = factory.newSchema(schemaFile);
} catch (Exception e) {
e.printStackTrace();
}
Validator validator = schema.newValidator();
validator.validate(new DOMSource(document));
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
String path = locationXSD.substring(0, locationXSD.lastIndexOf('/')+1);
Source schemaFile = new StreamSource(TemplateHandler.class.getClassLoader().getResourceAsStream(locationXSD));
schema = factory.newSchema(schemaFile);//thread safe object which can be reused
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);
builderFactory.setSchema(schema);
DocumentBuilder builder = builderFactory.newDocumentBuilder();
document = builder.parse(new InputSource(new StringReader(xml)));
Validator validator = schema.newValidator();
validator.validate(new DOMSource(document));