通过dom4j用XSD验证XML文件的有效性,参考如下代码可以实现验证。但是我想使用自定义的错误信息。通过errorHandler.getErrors();方法打印出来的错误信息对客户来说可能不易明白 。
xml的每个元素大概有4种验证。
1.是否必须项目
2.属性(string,半角英数字,文件名等等)
3.位数
4.入力值验证(类似于只能输001~035之类的验证)
每种验证都使用自己定义好的错误信息的格式。
1.[xx行]‘xxx’是必须项目。
2.[xx行]‘xxx’的属性不对,
3.[xx行]‘xxx’的位数不对,
4.[xx行]‘xxx’的入力值不对, 。。
想实现如上功能的错误提示可以实现吗?
//创建一个SAXValidator校验工具,并设置校验工具的属性
SAXValidator validator = new SAXValidator(parser.getXMLReader());
//设置校验工具的错误处理器,当发生错误时,可以从处理器对象中得到错误信息。
validator.setErrorHandler(errorHandler); //校验
validator.validate(xmlDocument);
XMLWriter writer = new XMLWriter(OutputFormat.createPrettyPrint());
//如果错误信息不为空,说明校验失败,打印错误信息
if (errorHandler.getErrors().hasContent()) {
System.out.println("XML文件通过XSD文件校验失败!");
// ** 将document中的内容写入文件中 *//*
writer.write(errorHandler.getErrors());
writer.close(); } else {
System.out.println("Good! XML文件通过XSD文件校验成功!");
}
xml的每个元素大概有4种验证。
1.是否必须项目
2.属性(string,半角英数字,文件名等等)
3.位数
4.入力值验证(类似于只能输001~035之类的验证)
每种验证都使用自己定义好的错误信息的格式。
1.[xx行]‘xxx’是必须项目。
2.[xx行]‘xxx’的属性不对,
3.[xx行]‘xxx’的位数不对,
4.[xx行]‘xxx’的入力值不对, 。。
想实现如上功能的错误提示可以实现吗?
//创建一个SAXValidator校验工具,并设置校验工具的属性
SAXValidator validator = new SAXValidator(parser.getXMLReader());
//设置校验工具的错误处理器,当发生错误时,可以从处理器对象中得到错误信息。
validator.setErrorHandler(errorHandler); //校验
validator.validate(xmlDocument);
XMLWriter writer = new XMLWriter(OutputFormat.createPrettyPrint());
//如果错误信息不为空,说明校验失败,打印错误信息
if (errorHandler.getErrors().hasContent()) {
System.out.println("XML文件通过XSD文件校验失败!");
// ** 将document中的内容写入文件中 *//*
writer.write(errorHandler.getErrors());
writer.close(); } else {
System.out.println("Good! XML文件通过XSD文件校验成功!");
}
研究下validatorhe你吧
默认的输出语言是en文的,而且很容易理解的:)