Validator para Stax - JAXP

0 respostas
juceliohv

Boa tarde,

Alguém sabe como faço para validar um arquivo xml contra um xsd usando StAX?

Segue código usado para ler os arquivos xml.

@Override
    public void run() {
        
        arquivos = diretorio.getAbsoluteFile().listFiles(new nfeInNameFilter());
        
        for(int i = 0; i < arquivos.length; i++){
            
         // pass the file name.. all relative entity
	        // references will be resolved against this as
	        // base URI.
	        try {
	        	
				xmlr = xmlif.createXMLStreamReader(arquivos[i].getAbsolutePath(),new FileInputStream(arquivos[i].getAbsolutePath()));
				
				
		        // when XMLStreamReader is created, it is positioned
		        // at START_DOCUMENT event.
		        int eventType = xmlr.getEventType();
		        // check if there are more events in the input stream
		        printEventType(eventType);
	        
				while(xmlr.hasNext()) {
				    eventType = xmlr.next();
				    printEventType(eventType);				    
				    
				    // these functions print the information about
				    // the particular event by calling the relevant
				    // function			    
				    		            
				}				
			} catch (XMLStreamException e) {

				e.printStackTrace();
			} catch (FileNotFoundException e) {
				
				e.printStackTrace();
			}
        }
        System.out.println("\nimprimindo --------------------------------------------------------");
        for(regC170NFe c170: proc.getLinhasRegC170NFes()){
			System.out.println(c170.getC100_f05_COD_MOD() +(char)9+c170.getC100_f07_SER()+(char)9+c170.getC100_f08_NUM_DOC()+(char)9+c170.getF02_NUM_ITEM());
		}
    }

    private static void printEventType(int eventType) throws XMLStreamException {
//		System.out.println("Event-Type: " + getEventTypeString(eventType));
		getEventTypeString(eventType);		
	}
    
    public static String getEventTypeString(int eventType) throws XMLStreamException {
	    switch (eventType) {
	        case XMLEvent.START_ELEMENT:	        	
	        	galhoAtual.append("/" + xmlr.getName().getLocalPart());
	            return "START_ELEMENT";	            
	            
	        case XMLEvent.END_ELEMENT:	        	
	        	if(galhoAtual.lastIndexOf(xmlr.getLocalName()) >= 0){
	        		galhoAtual.delete(galhoAtual.length() - xmlr.getLocalName().length() - 1,galhoAtual.length());
	        		
	        	}else{
	        		galhoAtual.delete(galhoAtual.lastIndexOf("/"), galhoAtual.length());	        			
	        	}
	            return "END_ELEMENT";
	            
	        case XMLEvent.PROCESSING_INSTRUCTION:
	        	System.out.println("PROCESSING_INSTRUCTION");
	            return "PROCESSING_INSTRUCTION";
	            
	        case XMLEvent.CHARACTERS:

//	        	System.out.println(galhoAtual.toString() +" "+ xmlr.getText());

	            return "CHARACTERS";
	            
	        case XMLEvent.COMMENT:
	        	System.out.println("COMMENT");
	            return "COMMENT";
	            
	        case XMLEvent.START_DOCUMENT:
	        	return "START_DOCUMENT";
	            
	        case XMLEvent.END_DOCUMENT:
	        	if(galhoAtual.length()>0){ galhoAtual.delete(0,galhoAtual.length() -1 );}

	        	return "END_DOCUMENT";
	            
	        case XMLEvent.ENTITY_REFERENCE:
	        	System.out.println("ENTITY_REFERENCE");
	            return "ENTITY_REFERENCE";
	            
	        case XMLEvent.ATTRIBUTE:
	        	System.out.println("ATTRIBUTE");
//	        	for(int i = 0; i< xmlr.getAttributeCount(); i++){
//	        		System.out.println("Atributos: " + xmlr.getAttributeLocalName(i) +" "+ xmlr.getAttributeValue(i));
//	        	}
	            return "ATTRIBUTE";
	            
	        case XMLEvent.DTD:
	        	System.out.println("DTD");
	            return "DTD";
	            
	        case XMLEvent.CDATA:
	        	System.out.println("CDATA");
	            return "CDATA";
	            
	        case XMLEvent.SPACE:
	        	System.out.println("SPACE");
	            return "SPACE";
	    }
	    return "UNKNOWN_EVENT_TYPE , " + eventType;
	}
Criado 27 de julho de 2011
Respostas 0
Participantes 1