XML文件校验

已经找到解决方案,但是digester好像不行。
dom4j解决方案:

Java代码 复制代码
  1.   
  2.   
  3. SAXReader reader = new SAXReader();   
  4.   
  5.         reader.setValidation(true);   
  6.         try {   
  7.             reader.setFeature("http://xml.org/sax/features/validation"true);   
  8.             reader.setFeature("http://apache.org/xml/features/validation/schema"true);   
  9.   
  10.             reader.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",   
  11.                                             "d://requestinfo.xsd");   
  12.   
  13.             XMLErrorHandler errorHandler = new XMLErrorHandler();   
  14.             reader.setErrorHandler(errorHandler);   
  15.   
  16.             Document document = reader.read("d://requestInfo.xml");   
  17.             XMLWriter writer = new XMLWriter(OutputFormat.createPrettyPrint());   
  18.             if (errorHandler.getErrors().hasContent()) {   
  19.                     writer.write(errorHandler.getErrors());   
  20.             } else {   
  21.                     System.out.println("validate success.");   
  22.             }   
  23.         } catch (SAXException e) {   
  24.             e.printStackTrace();   
  25.         } catch (DocumentException e) {   
  26.             e.printStackTrace();   
  27.         } catch (UnsupportedEncodingException e) {   
  28.             e.printStackTrace();   
  29.         } catch (IOException e) {   
  30.             e.printStackTrace();   
  31.         }   
  32.            
  33.     }  
  34. ================================================================不知道你用是不是jdk1.5以上,如果是可以试试jdk提供的Schema,我直接拷贝项目中的代码了。
    Java代码 复制代码
    1. public class DefaultSchemaValidator implements SchemaValidator {   
    2.   
    3.     private InputStream schemaStream;   
    4.        
    5.     /**  
    6.      * 构造函数  
    7.      * @param schemaStream schema文件输入流  
    8.      */  
    9.     public DefaultSchemaValidator(InputStream schemaStream) {   
    10.     this.schemaStream = schemaStream;   
    11.     }   
    12.        
    13.     /**  
    14.      * 构造函数  
    15.      * @param clz   
    16.      * @param schemaFile schema文件  
    17.      */  
    18.     public DefaultSchemaValidator(Class clz, String schemaFile) {   
    19.     this.schemaStream = clz.getResourceAsStream(schemaFile);   
    20.     }   
    21.        
    22.     public DefaultSchemaValidator(ClassLoader classLoader, String schemaFile) {   
    23.     this.schemaStream = classLoader.getResourceAsStream(schemaFile);   
    24.     }   
    25.        
    26.     public void validate(InputStream xmlStream, ErrorHandler errorHandler) throws SAXException, IOException {   
    27.     Schema schema = createSchema(schemaStream);   
    28.     Validator validator = schema.newValidator();   
    29.     validator.setErrorHandler(errorHandler);   
    30.     validator.validate(new StreamSource(xmlStream));   
    31.     }   
    32.   
    33.     public void validate(InputStream xmlStream) throws SAXException, IOException {   
    34.     validate(xmlStream, new DefaultErrorHandler());   
    35.     }   
    36.        
    37.     /**  
    38.          * 验证给定的xml是否合法  
    39.          *   
    40.          * @return  
    41.          * @throws SAXException  
    42.          */  
    43.     protected Schema createSchema(InputStream schemaStream) throws SAXException {   
    44.     SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);   
    45.     return schemaFactory.newSchema(new StreamSource(schemaStream));   
    46.     }   
    47. }  

 

 

你可能感兴趣的:(XML文件校验)