Java 使用XSD/XML验证时立即返回所有错误

Java 使用XSD/XML验证时立即返回所有错误,java,xml,xsd,Java,Xml,Xsd,我正在向我在工作中创建的工具添加XSD验证。此功能仅验证根据XSD映射文档创建的XML。当控制台中显示当前错误时,代码正常工作。问题是,我希望有一些方法可以让每个错误按顺序出现。我不知道这是否可行,但现在如果有人能告诉我如何在控制台中打印所有错误,我将不胜感激。这是我的密码: package xmlValidation; import java.io.File; import java.io.IOException; import javax.swing.JFileChooser; impo

我正在向我在工作中创建的工具添加XSD验证。此功能仅验证根据XSD映射文档创建的XML。当控制台中显示当前错误时,代码正常工作。问题是,我希望有一些方法可以让每个错误按顺序出现。我不知道这是否可行,但现在如果有人能告诉我如何在控制台中打印所有错误,我将不胜感激。这是我的密码:

package xmlValidation;

import java.io.File;
import java.io.IOException;

import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.xml.sax.SAXException;


public class XMLValidation {


    public static JFileChooser uploadFile;

    public static void main(String[] args){

        XMLValidation.uploadFile();

        System.out.println("XML File Validates Against XSD"+validateXMLSchema("resources/camt.054.001.04.xsd",uploadFile.getSelectedFile().toString()));

    }

    public static boolean validateXMLSchema(String xsdPath, String xmlPath){

        try{

            SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

            Schema schema = factory.newSchema(new File(xsdPath));
            Validator validator = schema.newValidator();
            validator.validate(new StreamSource(new File(xmlPath)));

        }catch(IOException | SAXException e){

            System.out.println("Exception: "+e.getMessage());

            return false;

        }   

        return true;

    }

    public static void uploadFile(){

        boolean uploadApproval = false;

        while(uploadApproval==false){//While upload approval has not been given..

            JFileChooser chooser = new JFileChooser();//Creates a new object of the JFileChooser class. 

            uploadFile = chooser;//Saves the upload file variable as the chooser response. 

            FileNameExtensionFilter filter = new FileNameExtensionFilter("XML Files", "xml");
            //Sets the allowed file formats for upload. 

            chooser.setFileFilter(filter);//Activates the created file filter.

            chooser.setDialogTitle("Please choose a CamT54 file to upload");//Sets the title bar text. 

            //Completes once the user clicks ok. 
            int returnVal = chooser.showOpenDialog(chooser);//
            if(returnVal == JFileChooser.APPROVE_OPTION){
                uploadApproval=true;
            }else{
                System.exit(0);
            }

            }
        }

}