java xsi type_cvc-complex-type.3.2.2:属性xsi:不允许在Java DOM中出现schemaLocation

我试图通过使用DOM验证器在

Java中使用XSD验证我的XML.

虽然我手动地知道该文档确实有效,但DOM验证器还是对我说:

cvc-complex-type.3.2.2: Attribute is not allowed to appear in the element

我已经确定:

setNamespaceAware()设置为true

schemaLanguage属性在schemaSource之前设置

schemaLanguage设置为http://ww.w3.org/2001/XMLSchema

XSD和XML都与.java和.class文件位于同一文件夹中

SSCCE

import org.xml.sax.*;

import org.xml.sax.helpers.*;

import javax.xml.parsers.*;

public class DOMValidator {

String xmlInstance = null;

String xmlSchema = null;

public static void main(String[] args){

DOMValidator validator = new DOMValidator();

validator.validateXML("student.xsd","helloWorld.xml");

}

public void validateXML(String xsd,String xml){

xmlSchema = xsd;

xmlInstance = xml;

beginValidation();

}

public void beginValidation(){

try{

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

factory.setNamespaceAware(true);

factory.setValidating(true);

factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage","http://www.w3.org/2001/XMLSchema");

factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource",xmlSchema);

ErrorHandler errorHandler = new ErrorHandler();

DocumentBuilder builder = factory.newDocumentBuilder();

builder.setErrorHandler(errorHandler);

builder.parse(xmlInstance);

if(errorHandler.errorOccured == true){

System.out.println("Document is Invalid.");

System.out.println(errorHandler.ex.getMessage());

}else{

System.out.println("Doument is valid");

}

}catch(ParserConfigurationException e){

e.printStackTrace();

}catch(SAXException e){

e.printStackTrace();

}catch(Exception e){

e.printStackTrace();

}

}

private class ErrorHandler extends DefaultHandler{

public SAXParseException ex = null;

public boolean errorOccured = false;

@Override public void error(SAXParseException ex){

this.ex = ex;

errorOccured = true;

}

@Override public void fatalError(SAXParseException ex){

this.ex = ex;

errorOccured = true;

}

@Override public void warning(SAXParseException ex){

this.ex = ex;

errorOccured = true;

}

}

}

XSD

xmlns="http://www.cmu.edu/ns/blank"

targetNamespace="http://www.cmu.edu/ns/blank"

elementFormDefault="qualified">

XML

xmlns="http://www.cmu.edu/ns/blank"

xmlns:xsi="http://www.w3c.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.cmu.edu/ns/blank student.xsd">

我该如何解决这个问题?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值