java实现jsonvalidator和xmlvalidator对文件验证
时间: 2023-09-01 20:07:25 浏览: 110
Java 中可以使用一些库来实现 JSON 和 XML 文件的验证,比如:
1. JSON 验证器:可以使用 json-schema-validator 库来验证 JSON 文件是否符合指定的 JSON Schema。以下是一个简单的示例:
```java
import com.github.fge.jsonschema.core.exceptions.ProcessingException;
import com.github.fge.jsonschema.main.JsonSchema;
import com.github.fge.jsonschema.main.JsonSchemaFactory;
import com.github.fge.jsonschema.core.report.ProcessingReport;
import com.github.fge.jsonschema.core.report.ProcessingMessage;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.net.URL;
public class JsonValidator {
public static void main(String[] args) throws IOException, ProcessingException {
// 读取 JSON 文件和 JSON Schema 文件
String jsonData = "{ \"name\": \"John\", \"age\": 30 }";
String schemaData = "{ \"type\": \"object\", \"properties\": { \"name\": { \"type\": \"string\" }, \"age\": { \"type\": \"integer\" } } }";
ObjectMapper mapper = new ObjectMapper();
JsonNode json = mapper.readTree(jsonData);
JsonNode schema = mapper.readTree(schemaData);
// 创建 JSON Schema 验证器
JsonSchemaFactory factory = JsonSchemaFactory.byDefault();
JsonSchema jsonSchema = factory.getJsonSchema(schema);
// 验证 JSON 文件是否符合 JSON Schema
ProcessingReport report = jsonSchema.validate(json);
// 打印验证结果
if (report.isSuccess()) {
System.out.println("JSON 文件符合 JSON Schema!");
} else {
for (ProcessingMessage message : report) {
System.out.println(message.getMessage());
}
}
}
}
```
2. XML 验证器:可以使用 javax.xml.validation 包中提供的 API 来验证 XML 文件是否符合指定的 XSD Schema。以下是一个简单的示例:
```java
import java.io.File;
import javax.xml.XMLConstants;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.xml.sax.SAXException;
public class XmlValidator {
public static void main(String[] args) {
// 读取 XML 文件和 XSD Schema 文件
File xmlFile = new File("example.xml");
File xsdFile = new File("example.xsd");
try {
// 创建 XML 验证器
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(xsdFile);
Validator validator = schema.newValidator();
// 验证 XML 文件是否符合 XSD Schema
validator.validate(new StreamSource(xmlFile));
// 打印验证结果
System.out.println("XML 文件符合 XSD Schema!");
} catch (SAXException e) {
System.out.println("XML 文件不符合 XSD Schema:" + e.getMessage());
} catch (IOException e) {
System.out.println("无法读取 XML 文件或 XSD Schema 文件:" + e.getMessage());
}
}
}
```
阅读全文