Java 使用XSD/XML验证时立即返回所有错误
我正在向我在工作中创建的工具添加XSD验证。此功能仅验证根据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
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);
}
}
}
}