dom4j是有这个功能的
errorHandler = new XMLErrorHandler();
SAXParser parser = factory.newSAXParser();
SAXReader xmlReader = new SAXReader();
Document documentObject = (Document) xmlReader
.read(new File(
"c:\\test4.xml"));
String xsdPath = "c:\\test4.xsd";//xsdPath是绝对路径
parser.setProperty(
"http://java.sun.com/xml/jaxp/properties/schemaLanguage",
"http://www.w3.org/2001/XMLSchema");
parser.setProperty(
"http://java.sun.com/xml/jaxp/properties/schemaSource",
"file:" + xsdPath); SAXValidator validator = new SAXValidator(parser.getXMLReader());
validator.setErrorHandler(errorHandler);
validator.validate(documentObject);

解决方案 »

  1.   

    java中的jaxp也能够实现这个功能
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    factory.setValidating(true);
    String xsdPath = "c:\\test4.xsd";
    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",
        "file:" + xsdPath);
    DocumentBuilder builder;
    ErrorHandler handler = new ErrorHandler();
    try {
    builder = factory.newDocumentBuilder();
    builder.setErrorHandler(handler); 
    builder.parse("c:\\test4.xml");
      

  2.   

    兄台,还是只能检验是不是well-formed,但是有效性不管对不对,都会通过,不会报错啊,是不是要自己写个ErrorHandler哈,师兄请指教!!谢谢先!
      

  3.   

    问题自己解决了哈,要自己写自己的ErrorHandler才能报错哈.
      

  4.   

    是要自己写ErrorHandler才能报错,休息了没有上。不好意思