gpt4 book ai didi

java - 我根据 xsd 验证 xml 后如何列出所有错误?

转载 作者:行者123 更新时间:2023-12-04 03:08:53 25 4
gpt4 key购买 nike

我已经在网上搜索并尝试了几天,但我仍然无法列出所有错误,我只能显示 1 个错误。为什么?我需要列出所有错误。希望有人帮助我。下面是我的验证和错误处理程序代码。程序只会进入 error(),而且只会进入一次。第一个元素出错,但 XML 中还缺少其他元素,因此不显示它们。

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

import javax.xml.XMLConstants;
import javax.xml.transform.Source;
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 XMLValidate1 {

public static void main(String[] args) throws SAXException, IOException {


SchemaFactory factory
= SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
File schemaLocation = new File("Q1.xsd");
Schema schema = factory.newSchema(schemaLocation);
Validator validator = schema.newValidator();
validator.setErrorHandler(new ValidateErrorHandler());
Source xmlFile = new StreamSource(new File("Q1.xml"));

try {
validator.validate(xmlFile);
System.out.println(xmlFile.getSystemId() + " is valid.");
}
catch (SAXException ex) {
System.out.println(xmlFile.getSystemId() + " is not valid because ");
System.out.println(ex.getMessage());
}

}

}

下面是我的错误处理程序

import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

public class ValidateErrorHandler implements ErrorHandler {

public void warning(SAXParseException ex) {
System.out.println("Warning: ");
System.err.println(ex.getMessage());
}

public void error(SAXParseException ex) {
System.out.println("Error: ");
System.err.println(ex.getMessage());
}

public void fatalError(SAXParseException ex) throws SAXException {
System.out.println("Fatal error: ");
System.err.println(ex.getMessage());
}

最佳答案

首先,这取决于您使用的模式 validator 。 JAXP 接口(interface)旨在与各种模式 validator 一起工作。如果您使用的是 JDK 附带的默认版本,请告知我们。

所有 validator 都将能够从某些错误中恢复,而其他错误则不能,因此我们需要知道的另一件事是特定错误是什么。发布样本 XSD 和 XML 会很有用,这样我们就可以比较结果。

如果您想考虑使用 Saxon 作为您的模式验证引擎,它有一个选项可以在 XML 报告中为您提供所有验证错误的列表,您可以使用 XSLT 将其格式化为您自己的要求。

关于java - 我根据 xsd 验证 xml 后如何列出所有错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46762675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com